首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >`topmost.__init__.py`可以访问`topmost.submodule.__init__.py`中的全局变量吗?

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

Stack Overflow用户
提问于 2017-05-11 06:16:43
回答 1查看 52关注 0票数 0

如果我的topmost库是这样构造的:

代码语言:javascript
复制
topmost
    /__init__.py
    /submodule
      /__init__.py

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

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

代码语言:javascript
复制
def characterize(input):
    global abc 
    abc = load_abc_model()
    return abc.func(input)

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

代码语言:javascript
复制
from __future__ import absolute_import

from topmost import submodule

__import__('submodule', globals())

但是只有abc全局变量在最上面是不可访问的。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-05-11 08:11:20

第一次执行函数时,通过/在函数中声明/定义的全局变量(在全局范围内)将出现。

证明:

代码语言:javascript
复制
$ 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
>>> 

使用当前设置:

代码语言:javascript
复制
topmost
    /__init__.py
    /submodule
      /__init__.py

以及:

代码语言:javascript
复制
def characterize(input):
    global abc 
    abc = load_abc_model()
    return abc.func(input)

topmost.submodule.abc 只有在 topmost.submodule.characterize()被调用之后才能存活。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43907854

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档