版本中立的打印
2to3转换器
其中一种方案是,你可以编写Python 2.X的print语句并使用Python 3.X的2to3转换脚本自动将他们转换为Python 3.X函调用。可参阅Python 3.X的手册以更详细地了解这一脚本,它会试图把Python 2.X的代码转换成可以在Python 3.X下运行。该脚本是一个很有用的工具,但如果你只是想让打印操作变得版本中立的话就显得大材小用了。另一个相关的工具叫作3to2,作用正好相反:将3.X的代码转换成可在2.X下运行。
-
目录. C:\Python33\Tools\Scripts\2to3.py. 其实在python2.6,2.7中都存在这个工具。
-
如果不加-w参数,则默认只是把转换过程所对应的diff内容打印输出到当前窗口而已。
-
加了-w,就是把改动内容,写回到原先的文件了。
-
可以看见在python 2to3.py 后面是需要参数的,我们输入–help 可以看到所需的参数信息。
-
2to3.py 脚本可以单独转换python2.x 代码 到python3,也可以按照目录批量的转换:
- 按目录转换
假设要转换的代码在目录:D:\python_code
那么在CMD里面输入:
C:\Program Files\Python 3.8\Tools\scripts>python 2to3.py -w D:\python_code
- 按指定代码转换
C:\Program Files\Python 3.8\Tools\scripts>python 2to3.py -w D:\python_code\code1.py
从__future__导入
你可以通过把下面这条语句编写在脚本顶部,或者放在交互式会话的任何位置,来在Python 2.X运行的代码中编写和使用Python 3.X的print函数调用:
from __future__ import print_function
这条语句让Python 2.X能够支持Python 3.X的print函数。通过这种方式,我们可以使用Python 3.X的print功能,而且如果之后迁移到Python 3.X的话也不必修改print。这里给出两条使用注意:
- 如果这条语句在通过3.X运行的代码中出现,则被直接忽略,也就是说为了2.X的兼容性在3.X的代码中加入这条语句不会影响在3.X中的运行。
- 这条语句必须出现在所有支持2.X打印的源文件的顶部——因为它只是为单个文件修改解析器,所以只导入一个包含该语句的另一个文件是不够的。