Python-使用父包的__init__子模块

时间:2018-09-13 07:11:30

标签: python

我的包装结构如下:

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!

1 个答案:

答案 0 :(得分:1)

您误解了__future__模块的工作方式。 __future__是python解释器中内置的一个特殊模块,可更改解释器解析和/或执行代码的方式。为了使__future__导入具有所需的效果,必须的格式为

from __future__ import <feature>

(有关详细说明,请参见PEP 236。)

但是,除了解释器内置的__future__模块之外,__future__ a real module in the standard library!导入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时,您只是在导入此变量。但是您没有启用新的除法行为。

相关问题