关于本站
1、基于Django+Bootstrap开发
2、主要发表本人的技术原创博客
3、本站于 2015-12-01 开始建站
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。