Python的管理者把他们对Python新特性发展的注意力转移到了Python3.x系列上了。这意味着拍Python2系列除了会得到bug的修复和更新对于新的硬件和操作系统的版本的支持之外,不会再有对于语言和标准库的全新特征版本的发布。作者最初开发Python3的目的就是去除之前的Python版本中的出现的主要缺点并删除一些比较繁琐的东西。对标准库所做的最新的改进都只作用于Python3.x。
Python2.x和Python3.x之间的区别:
1. 函数的改变,例如print;
2. 很多API返回类型的改变,例如:dict的dict.keys(), dict.items() 和 dict.values() 返回“views”不在返回”lists”;
3. 部分函数的参数的改变和部分函数的删除,例如:builtin.sorted()不再接受cmp参数,__cmp__()已经不存在;
4. 变量类型的改变,例如:long在新版本中已经不存在,新版本中只有int
5. Pyhton3.x使用text和(binary)data代替之前版中的unicode和8位的strings
6. 语法的改变,例如as,with变成了保留字,新的Metaclass语法等
7. 语法的删除,例如:
1)去除了<>,全部改用!=
2)去除``,全部改用repr()
3)关键词加入as 和with,还有True,False,None
4)加入nonlocal语句。使用noclocal x可以直接指派外围(非全局)变量
5)去除print语句,加入print()函数实现相同的功能。同样的还有 exec语句,已经改为exec()函数
8. 标准库的改变,很多老的模块已经删除,例如:gopherlib,md5;部分模块的名字已经改变
9. 异常的改变,例如:StandardError已经删除等
10. 操作符和特殊方法的改变,例如:__getslice__(),__setslice__(),__delslice__()等已经删除
11. 改变了顺序操作符的行为,例如x<y,当x和y类型不匹配时抛出TypeError而不是返回随即的 bool值。
12. 输入函数改变了,删除了raw_input,用input代替:
13. 扩展的可迭代解包。在Py3.X 里,a, b, *rest = seq和 *rest, a = seq都是合法的,只要求两点:rest是list 对象和seq是可迭代的。
14. 异常的改变
以上只是列举了Python2.x和Python3.x之间的部分改变,还有很多未列出。总体上来说,做的改动非常大,但是我们可以通过2to3将Python2.x的代码转换成Python3.x。
Python3.x运行 pystone benchmark的速度比Python2.x慢30%。Guido认为Python3.x有极大的优化空间,在字符串和整形操作上可以取得很好的优化结果。
Python3.x的个版本之间的主要更新:
通过查看Python3.x各版本的更新,可以看出更新主要集中在如下几个方面:
欢迎光临 51Testing软件测试论坛 (http://bbs.51testing.com/) | Powered by Discuz! X3.2 |