我们知道,在python 2.x中,如果我们将两个整数值分开,则会产生int
。但是,如果使用from __future__ import division
,我们会获得float
值。
>>> 3/2
1
>>> from __future__ import division
>>> 3/2
1.5
>>>
>>>
>>> 3//2
1
>>> 4/3
1.3333333333333333
>>>
因此,如果我们在导入//
之后需要整数,则应使用/
而不是__future__.division
,但我想知道如何让/
再次返回整数。
有没有办法取消导入或删除以前导入的模块?
有一种方法可以在IDLE中取消导入库或模块,即使用Ctrl + F6或菜单中的选项重新启动它
答案 0 :(得分:10)
python有reload
重新导入已经导入的模块(不应该在生产代码中使用),但是一旦模块取消导致模块就没有办法(我知道) #39;已被导入。
当然,您可以删除当前命名空间中该模块的引用:
import module
module.foo()
del module
module.foo() #NameError, can't find `module`
另一点是__future__
并非真正的模块。它更像是告诉解析器如何表现的指令。因此,当放入文件时,它必须是那里的第一件事(在任何其他导入之前等)。您可以从交互式会话中的任何位置导入__future__
这一事实是一种特殊情况。
答案 1 :(得分:5)
__future__
看起来像一个模块但不是真的。导入它实际上会影响当前模块的编译选项。没有办法“撤消”它,因为它甚至在模块执行之前就会发生。
如果它是任何其他“正常”模块,有方法,但你在这里运气不好。 要么处理已更改的语义,要么将需要不同编译的代码放在单独的模块中。
答案 2 :(得分:2)
我也遇到过这种需要。
我不使用__future__
。
当我需要浮点结果时,我将除数设为浮点数:
>>> 3/float(2) 1.5
答案 3 :(得分:-3)
您可以使用以下方式卸载它:
>>> del(module)