Python - __init__ 子模块使用父包

knh190

我有一个包结构:

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] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章