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

Mar*_*slo 10 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
>>> 
Run Code Online (Sandbox Code Playgroud)

所以,如果我们想在导入后想要整数,//而不是/应该使用__future__.division,但我想知道如何/再次返回整数.

有没有办法取消导入或删除以前导入的模块?


有一种方法可以在IDLE中取消导入库或模块,即使用Ctrl + F6或菜单中的选项重新启动它

mgi*_*son 10

python必须reload重新导入已经导入的模块(不应该在生产代码中使用),但是一旦导入模块,就没有办法(我知道)取消导入模块.

当然,您可以删除当前命名空间中对该模块的引用:

import module
module.foo()
del module
module.foo() #NameError, can't find `module`
Run Code Online (Sandbox Code Playgroud)

另一点是,这__future__不是一个真正的模块.它更像是告诉解析器如何表现的指令.因此,当放入文件时,它必须是那里的第一件事(在任何其他导入之前等).您可以__future__从交互式会话中的任何位置导入这一事实是一种特殊情况.


buk*_*zor 5

__future__看起来像一个模块但不是真的.导入它实际上会影响当前模块的编译选项.没有办法"撤消"它,因为它有效地发生在模块执行之前.

如果它是任何其他"正常"模块,有方法,但你在这里运气不好.要么处理已更改的语义,要么将需要不同编译的代码放在单独的模块中.