Python 导入符号后,如何从_future__中删除/取消导入符号?

Python 导入符号后,如何从_future__中删除/取消导入符号?,python,Python,在Python2.x中,两个整数相除返回一个整数。但是,如果您使用 from ___future___ import division 您可以获得一个浮点值: >>> 3/2 1 >>> from __future__ import division >>> 3/2 1.5 >>> >>> >>> 3//2 1 >>> 4/3 1.3333333333333333

在Python2.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
语句是您导入的文件的本地语句,因此,例如,如果您将此文件命名为
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
因此,如果您想要只在某些代码中使用的导入,请将该代码放在单独的文件中


但就你给的这个案子来说,我不确定它是否有用。当您需要整数除法时,为什么不直接使用
/

\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu
导入是特殊的,无法撤消。你可以了解他们的行为

以下是一些相关部分:

future语句在编译时会得到识别和特别处理:对核心结构语义的更改通常通过生成不同的代码来实现。甚至可能是新特性引入了新的不兼容语法(例如新的保留字),在这种情况下,编译器可能需要以不同的方式解析模块。这样的决定不能推迟到运行时。

在交互式口译员提示下键入的未来语句将在口译员会话的其余时间生效

由于与运行时相反,
\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu future\uuuuuuuuuuuuuuu
语句是在编译时处理的,因此没有用于恢复已更改行为的运行时方法


对于普通模块,您可以删除从名称空间导入的任何模块,并在中删除该导入的条目,从而删除或取消对该模块的导入(根据用例的不同,第二部分可能不是必需的,它所做的只是在再次导入模块时强制重新加载该模块).

为什么要这样做?+1回答这个问题(解释了问题)和Brendan Long的问题(解释了OP如何真正做到他想做的事情)。还要注意,扩展模块(即用C等编译语言编写的模块)不能卸载,因为它们在导入时被集成到解释器的地址空间中。一个答案是,为什么有人想“取消”未来的划分是单元测试。我正在重载除法运算符,并希望验证Python 2中的单斜杠行为。我可以直接调用
\uu div\uu()
。您的答案可能是更好的解决方案:在不同的源文件中使用单斜杠进行测试。