在python中检测整数除法

问题描述 投票:4回答:1

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

python python-3.x python-2.7 integer-division
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开关还可以检测其他不兼容性(不是全部)而不会中断,因此您可以立即修复它们。

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

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

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

© www.soinside.com 2019 - 2024. All rights reserved.