10

正如我们所知,在 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
>>> 

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

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


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

4

4 回答 4

10

python 必须reload重新导入已经导入的模块(不应在生产代码中使用),但是一旦导入模块,就无法(据我所知)取消导入模块。

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

import module
module.foo()
del module
module.foo() #NameError, can't find `module`

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

于 2012-09-19T15:18:48.643 回答
5

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

如果它是任何其他“正常”模块,有办法,但你在这里不走运。要么处理更改的语义,要么将需要不同编译的代码放在单独的模块中。

于 2012-09-19T15:18:24.447 回答
2

我也遇到过这种需求。

我不使用__future__.

当我需要浮点结果时,我将除数设为浮点数:

>>> 3/浮点数(2)
1.5
于 2012-09-19T15:39:11.890 回答
-3

您可以使用以下方法卸载它:

>>> del(module)
于 2012-09-19T15:49:38.937 回答