在python 2.x中,将两个整数除以会返回一个整数。但是,如果您使用
from ___future___ import division
你可以得到一个浮动值:
>>> 3/2
1
>>> from __future__ import division
>>> 3/2
1.5
>>>
>>>
>>> 3//2
1
>>> 4/3
1.3333333333333333
>>>
在import
之后,必须使用//
而不是/
来进行整数除法。如何恢复import
,使/
再次进行整数除法?
__future__
导入是特殊的,无法撤消。你可以在这里了解他们的行为。
以下是一些相关部分:
未来语句在编译时得到识别和特殊处理:对核心结构语义的更改通常通过生成不同的代码来实现。甚至可能出现新功能引入新的不兼容语法(如新的保留字)的情况,在这种情况下,编译器可能需要以不同的方式解析模块。这样的决策不能推迟到运行时
在交互式解释器提示下键入的未来语句将在解释器会话的其余部分生效。
由于__future__
语句是在编译时而不是在运行时处理的,因此没有用于恢复更改的行为的运行时方法。
对于普通模块,您可以通过删除从命名空间导入的任何内容来删除或取消导入模块,并在sys.modules
中删除该导入的条目(根据用例的不同,第二部分可能没有必要,它所做的只是在再次导入模块时强制重新加载模块)。
import
语句是导入文件的本地语句,因此,例如,如果您将该文件作为example.py
:
from __future__ import division
print(1/2)
然后将其加载到另一个文件中:
import example # prints 0.5 because `division` is imported in example.py
print(1/2) # prints 0 because `division` is not imported in this file
因此,如果您想要只在某些代码中使用的导入,请将该代码放在一个单独的文件中。
就你给出的情况而言,我不确定它是否有帮助。当您需要整数除法时,为什么不直接使用//
呢?