`topmost.__init__.py` 是否可以访问 `topmost.submodule.__init__.py` 中的全局变量?

Is it possible for `topmost.__init__.py` to access global variables in `topmost.submodule.__init__.py`?

如果我的 Python 库 topmost 结构如下:

topmost
    /__init__.py
    /submodule
      /__init__.py

topmost.__init__.py是否可以访问topmost.submodule.__init__.py中的全局变量?

加上topmost.submodule.__init__.py,应该有一些全局变量:

def characterize(input):
    global abc 
    abc = load_abc_model()
    return abc.func(input)

我已经在 topmost.__init__.py 中尝试过了,但是 topmost.submodule.__init__.py 中的全局变量仍然无法访问:

from __future__ import absolute_import

from topmost import submodule

__import__('submodule', globals())

但是在最顶层只有 abc 全局变量不可访问。

一个全局变量declared/defined through/within一个函数在第一次执行时会出现(在全局范围内)

证明:

$ python3
Python 3.5.2 (default, Nov 17 2016, 17:05:23) 
[GCC 5.4.0 20160609] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> 'abc' in globals()
False
>>> def foo():
...     global abc
...     abc = 123
...     print('foo')
... 
>>> 'abc' in globals()
False
>>> foo()
foo
>>> 'abc' in globals()
True
>>> 

使用当前设置:

topmost
    /__init__.py
    /submodule
      /__init__.py

和:

def characterize(input):
    global abc 
    abc = load_abc_model()
    return abc.func(input)

topmost.submodule.abc 只有在 topmost.submodule.characterize() 被调用后才会上线。