我有一个包结构:
parent_package/
__init__.py
module/
__init__.py
在父母__init__.py
我有:
from __future__ import division
print(3/2) # 1.5
但是,当我尝试在其子项中重用导入时,除法不起作用。在模块中__init__.py
:
from parent_package.__init__ import division
print(3/2) # 1!
您误解了__future__
模块的工作原理。__future__
是一个内置在 python 解释器中的特殊模块,它改变了解释器解析和/或执行代码的方式。为了使__future__
导入具有预期的效果,它必须具有以下形式
from __future__ import <feature>
(有关确切的规范,请参阅PEP 236。)
然而,除了__future__
那个内置于解释模块,__future__
是同样 的标准库真正的模块!导入from __future__ import divison
实际上做了两件事:启用新的划分行为,以及从真实__future__
模块中导入功能规范。如果您查看division
导入后的值,您将看到以下内容:
>>> from __future__ import division
>>> division
_Feature((2, 2, 0, 'alpha', 2), (3, 0, 0, 'alpha', 0), 8192)
当你这样做时from parent_package.__init__ import division
,你只是导入这个变量。但是您没有启用新的除法行为。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句