我需要将Python 2转换为3。整数除法是唯一让我感到担心的事情。我们的测试套件还好,但不一定设置为仔细检查除法。是否有某种包装器、环境或黑客可以运行脚本,以便检测何时使用整数除法?我主要在Windows上使用Anaconda Python 2.7。
我需要将Python 2转换为3。整数除法是唯一让我感到担心的事情。我们的测试套件还好,但不一定设置为仔细检查除法。是否有某种包装器、环境或黑客可以运行脚本,以便检测何时使用整数除法?我主要在Windows上使用Anaconda Python 2.7。
-3
开关:L:\>Python27_X64\python.exe -3 test.py
test.py:1: DeprecationWarning: classic int division
i = 2/3
from __future__ import division
在运行每个模块之前:现在除法是浮点数,除非您使用//
这是一个运行时选项,而不是静态选项,因此您需要很好地覆盖代码以捕获它们。例如,它无法检测到以下代码中的任何内容:
if False:
i = 2/3
-3
开关还可以检测其他不兼容性(但不是所有),而不会中断程序,因此您可以一次解决所有问题。with open("toto.txt","wb") as f:
f.write("foo")
在Python 3中,这种写法已经不再有效(字符串不能被写入二进制流),而-3
脚本并没有检测到这一点。