Python2 和 Python3 的共存与移植

Python 是一门特别的语言,它有 Python2 和 Python3 两个互不兼容却长期共存的版本。新手任选一支入门都行,不必理会它们的差异。随着码龄的增长,你将接触越来越多的模块,它们有的只支持 Python2 ,有的只支持 Python3 ,于是你不得不在同一台电脑中安装两个版本。好在 Windows 已经提供了解决方案:用 py -2py -3 分别启动 Python2 和 Python3 。

对于一般项目,从 Python2 向 Python3 移植时需要注意以下几点:

  1. print 。 Python2 的 print 是一个关键字,而在 Python3 中它是一个函数, print var -> print(var) 。今后将用另一种更标准也更优雅的方式来打印。
  2. input 。在 Python2 中有两个相似的函数, row_input()input() , Python 3 合二为一 input()
  3. except 。 Python2 的异常写作 except Exception, instance ,而 Python 3 写作 except Exception as instance 或者直接 except Exception
  4. list 的 sort 方法。 Python2 的 sort 方法有三个参数 cmp 、 key 、 reverse , Python3 废弃了 cmp ,沿用代码会报错 TypeError: 'cmp' is an invalid keyword argument for this function ,需要导入 functools.cmp_to_key 稍加修改,即 list.sort(cmp=cmp, key=key, reverse=False) -> list.sort(key=functools.cmp_to_key(cmp), reverse=False)

被问及 Python 的未来以及什么时候会出 Python 4.0 , Python 之父 Guido Van Rossum 回答说:“我和 Python 核心开发团队的成员对 Python 4.0 没有兴趣,估计至少编号到 3.33 。”