如果不想避开Python 2.x怎么办? 这是个有着很多错误的旧式语言, 需要制作一个大版本来去除这些错误
好吧,不是全部都这样。3.0和3.1中一些破坏较少的改进已经分别向后移植到2.6和2.7。关于更多向后移植的特性详情,请查看Python2.6中新增项和Python2.7中新增项。
一份不详尽的特性列表如下,它们只在3.x的发现版本中可用并且不会向后移植到2.x系列版本。
- 字符串默认为Unicode
- 清楚的Unicode/字节分隔
- 链式异常
- 函数注解
- 关键字参数语法
- 扩展元组解包
- 非本地变量声明
另外,语言的进化并不局限于核心语法或者语义的变化。 它也会涉及到标准库,在3.x中有很多标准库得以改进,并且这些改进不会直接向后移植到2.x。比如,可以查看Python 3新增项。然而,大量的标准库改进内容可以通过PyPI获取。
也就是说,书写良好的2.x版本代码可以跟3.x代码非常接近。这意味着很多事情,包括使用新式类,不使用古老的废弃的神秘咒语般的打印,在可用的地方使用懒惰的迭代器,等等。一个实际的例子:好的2.x代码会使用xrange而非range;xrange是Python 3.0中range实现(然而Python 3中range更强大,因为它可以处理比sys.maxint更大的数值)的起点。应该注意的是Python 3不包含xrange().
最重要的是建议把关注点放在书写良好的代码,这样的话2.x对比3.x变得更不是一个问题。这包含书写完整的测试套件,正确使用Unicode。(Python 3.x相比Python 2.x更是严重不能原谅Unicode和字节类型问题:这被认为是一个好事情,尽管它会导致移植某些软件包的时候很烦人)。
未完待续。。。To be continued…
原文参考:
https://wiki.python.org/moin/Python2orPython3