Python2和3兼容写法

  • 发布时间:2016年8月5日 10:04
  • 作者:杨仕航
  • 分类标签: Python
  • 阅读(11479)
  • 评论(1)

Python现阶段在我看来什么都好,就一点被吐槽比较厉害:版本问题。

程序猿们经常纠结要用Python2还是Python3。连初学的时候也有这个抉择问题。

建议初学先学python2.7,现在很多库还是只支持这个版本。python3.5语法改动相对不大,容易迁移到python3.5。

而Python3.5有些很好用的特性,但有些库不支持3.5~

这就是问题所在。所以,我们用Python开发的时候,尽量写一些兼容Python2和Python3的代码。

目前我总结了一些兼容写法。若你有不同的兼容写法,也一起讨论学习一下吧 ^_^


1、输出print函数

Python2.7 print写法常见有以下两种

print "1+1=%s" % 2
print "1+1=", 2

Python3.5 print写法也有两种

print("1+1=%s" % 2)
print("1+1", 2)

可以看出形式一样,就是函数的使用方法不同,Python2.7可以不用括号,而Python3.5一定要用括号。

兼容写法:

print("1+1=%s" % 2)
print("1+1", 2)


2、输入函数

Python2.7输入函数有两个

raw_input("say something:")
input("say something:")

Python3.5输入函数只有一个

input("say something:")

可以看出Python3.5不支持raw_input了。在使用输入函数的时候,尽量用input方法。但input方法时,不输入任何字符就直接回车,会报错。所以这里根据具体情况需要,做一定错误处理。

兼容写法:

try:
    input("say something:")
except:
    print("you input anything")


3、除法

除法是Python2和3区别最大的地方。若除数和被除数都是正常,在Python2.7是地板除(结果没有小数);在Python3.5这是我们正常认知的除法。

为了更好的兼容,确定结果是要整数还是小数,可以如下处理:

#确定要得到整数,加一个int函数
int(3/2)

#确定要得到小数,加一个小数点或用float函数
3/2.
3/float(2)


4、错误处理

错误处理也是比较有意思的地方。Python3不支持Python2的常见写法。

例如,Python2.7:

try:
    a = 1/0
except Exception, e:
    print(e.message)

Python3.5得写成:

try:
    a = 1/0
except Exception as e:
    print(e.message)

Python2.7也是支持as这种写法,所以兼容写法用Python3.5的写法即可。

另外raise抛出错误也是要注意一下。

Python2.7有两种写法:

raise Exception, "[error]test"
raise Exception("[error]test")

Python3.5只支持第二种写法,若要兼容写法用第二种:

raise Exception("[error]test")


4、库引用处理

库引用这个没有很好的兼容写法,因为不一定可以找到对应的兼容库。大部分时候只能用错误处理方法,处理一下:

try:
    import unrar #随便拿个库举例
except:
    pass #跳过,或者使用其他方法


通过上面的内容,可以看出Python3对语法做出一定规范性的调整,去掉一些冗余的语法。当然,你也可以不用在意。再过几年,Python2.7会慢慢淘汰,全面升级到3或者4。

上一篇:我的网站搭建(第24天) 阅读计数优化

下一篇:我的网站搭建(第23天) 第三方登录:QQ

评论列表

智慧如你,不想发表一下意见吗?

新的评论

清空