不兼容性从 Python 2 转移到 Python 3

目前有两个受支持的 Python 版本:2.7(Python 2)和 3.6(Python 3)。此外,版本 3.3 和 3.4 以源格式接收安全更新。

Python 2.7 与大多数早期版本的 Python 向后兼容,并且可以在大多数 1.x 和 2.x 版本的 Python 中运行 Python 代码。它广泛可用,有大量的包装。它也被 CPython 开发人员视为弃用,并且仅接收安全性和错误修复开发。CPython 开发人员打算在 2020 年放弃这个版本的语言。

根据 Python Enhancement Proposal 373 ,2016 年 6 月 25 日之后没有计划的 Python 2 未来版本,但错误修复和安全更新将在 2020 年之前得到支持。(它没有说明 2020 年的确切日期将是 Python 的日落日期 2.)

Python 3 故意破坏了向后兼容性,以解决语言开发人员对该语言核心的担忧。Python 3 获得了新的开发和新功能。它是语言开发人员打算推进的语言版本。

在 Python 3.0 的初始版本和当前版本之间的时间里,Python 3 的一些功能被反向移植到 Python 2.6 中,并且 Python 3 的其他部分被扩展为具有与 Python 2 兼容的语法。因此可以编写通过使用未来的导入和特殊模块(如 ) ,Python 将在 Python 2 和 Python 3 上运行。

未来的导入必须在你的模块的开头:

from __future__ import print_function
# other imports and instructions go after __future__
print('Hello world')

有关 __future__ 模块的更多信息,请参阅 Python 文档中相关页面

2to3 的工具是一个 Python 程序的 Python 2.x 的代码转换到 Python 3.x 的代码,也看到了 Python 文档

six 提供了 Python 2/3 兼容性的实用程序:

  • 统一访问重命名的库
  • 字符串/ unicode 类型的变量
  • 已删除或已重命名的方法的函数

可以在此处找到 Python 2 和 Python 3 之间差异的参考。