在很多Python有关的教程、书籍和代码片中,通常没有注明Python的版本,特别是百度出来一些Python编程问题的帖子,这对很多初学者的学习造成不小的困扰。为跟上时代的潮流,墙裂建议Python初学者从Python3.版本入手,这并不会增加Python学习的难度,还会减少很多不必要的麻烦。对于已经入坑Py2想转Py3的童鞋们,这里我总结了一些关于两个Python版本的语法变化,另在文末附上一份详细指南,以供大家学习参考。
1. Print函数
py2中print是一个语法结构,如 print value;
py3中print是一个函数,如 print(value)。
2. 除法运算
py2中两个整数除法得到的是0,要想得到浮点数结果,则被除数或除数二者要有一个是浮点数才行。如:
print 1/4 >>>0
print 1/4. >>>0.25
py3中整数相除可以直接得到浮点数结果,要想整数相除得到的是0,则要使用//符号。如:
print(1/4) >>>0.25
print(1//4) >>>0
3. nonlocal语句
py2没有,而py3 新加入的,可以指定非全局变量。
4. Input函数
py2中输入函数有input和raw_input两个函数,py3中只保留了input函数作为输入函数,而不再使用raw_input。
5. cPickle模块
py3中用pickle模块来取代py2的cPickle模块。
6. urlib模块
py2中有两个爬虫常用包urlib和urlib2,在py3中二者统一到urlib中。此外,py2中的urlparse模块也被统一到了urlib中,用法为urlib.parse。
7. 字典dict的方法
dict中的keys()、items()、values()方法将返回一个迭代器,而iterkeys()、has_key()方法将被弃用。
8. 迭代器next()
py3中迭代器next()方法更改为__next__(),并增加了内置函数next()。
9. 装饰器@
py3中新增了两个装饰器@abstractmethod和@abstractproperty。
10. os模块
py3中os模块中的os.tmpnam()和os.tmpfile()已转移到了tmpfile模块下。
此外,关于更多版本变动的内容,不再一一列出说明。在此,附上一篇干货《机器学习从python2迁移到python3你需要注意的一些事》,里面几乎涵盖了所有变动的内容及详解,有兴趣的童鞋可移步https://mp.weixin.qq.com/s?__biz=MzI0ODcxODk5OA==&mid=2247492842&idx=1&sn=52a3ae3083b906655985d36b5354e15c&chksm=e99ed713dee95e05cf1bee63bd5d7d5e09b929bd2c4f995ab5e4d28677b666188af1c425208c&scene=0#rd继续学习。祝大家元宵节快乐!