在python中检测整数除法

时间:2018-03-16 15:13:59

标签: python python-3.x python-2.7 integer-division

我必须让Python 2到3跳。整数除法是让我害怕的唯一因素。我们的测试套件还可以,但不一定要设置审查部门。是否有某种包装器或环境或黑客可以从中运行可以检测何时使用整数除法的脚本?我主要在Windows上使用Anaconda Python 2.7。

1 个答案:

答案 0 :(得分: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开关还会检测其他不兼容性(并非所有不兼容)而不会中断,因此您可以立即修复它们。

除此之外,分工不是最困难的问题。字符串vs字节位很烦人。考虑一下:

with open("toto.txt","wb") as f:
    f.write("foo")

这在Python 3中现在无效(字符串不能用二进制流写),-3脚本没有检测到。