Python - 以前导入了如何删除/ unmport libs

时间:2012-09-19 15:14:23

标签: python

我们知道,在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或菜单中的选项重新启动它

4 个答案:

答案 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)