在python 2.x中,除以两个整数会返回一个整数.但是,如果你使用
from ___future___ import division
Run Code Online (Sandbox Code Playgroud)
你可以得到一个浮动值:
>>> 3/2
1
>>> from __future__ import division
>>> 3/2
1.5
>>>
>>>
>>> 3//2
1
>>> 4/3
1.3333333333333333
>>>
Run Code Online (Sandbox Code Playgroud)
之后import,你必须使用//而不是/做整数除法.我如何能恢复的import,这样/再做整数除法?
And*_*ark 13
__future__进口是特殊的,无法撤消.你可以在这里阅读他们的行为.
以下是一些相关部分:
未来的语句在编译时被特别识别和处理:核心构造的语义变化通常通过生成不同的代码来实现.甚至可能是新功能引入了新的不兼容语法(例如新的保留字),在这种情况下,编译器可能需要以不同方式解析模块.直到运行时才能推迟这样的决定.
...
在交互式解释器提示符下键入的未来语句将对解释器会话的其余部分生效.
由于__future__语句是在编译时处理而不是运行时,因此没有用于还原已更改行为的运行时方法.
使用普通模块,您可以通过删除从命名空间导入的任何内容来删除或取消导入模块,并删除该导入的条目sys.modules(根据用例,此第二部分可能不是必需的,它所做的只是强制重新加载模块,如果它再次导入).
import语句是您导入的文件的本地语句,因此,例如,如果您将此文件作为example.py:
from __future__ import division
print(1/2)
Run Code Online (Sandbox Code Playgroud)
然后将其加载到另一个文件中:
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
Run Code Online (Sandbox Code Playgroud)
因此,如果您想要仅在某些代码中使用的导入,请将该代码放在单独的文件中.
在你给的情况下,我不确定它是否有用.为什么不在//需要整数除法时使用?
| 归档时间: |
|
| 查看次数: |
2143 次 |
| 最近记录: |