在Python中检测整数除法

4

我需要将Python 2转换为3。整数除法是唯一让我感到担心的事情。我们的测试套件还好,但不一定设置为仔细检查除法。是否有某种包装器、环境或黑客可以运行脚本,以便检测何时使用整数除法?我主要在Windows上使用Anaconda Python 2.7。


1
从__futures__导入除法:你完成了。 - Jean-François Fabre
1个回答

4
您可以使用Python 2引擎运行代码,但需要添加-3开关:
L:\>Python27_X64\python.exe -3 test.py
test.py:1: DeprecationWarning: classic int division
  i = 2/3

如果您希望在Python 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脚本并没有检测到这一点。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接