Python:我可以在软件包__init__模块中设置全局变量吗?



所以我正在阅读Alex Martelli对其他问题的回答...

"我可能想要初始化的一个示例是在包装上,我想一劳永逸地阅读一堆数据(来自文件,db或web)将阅读放入包装的 init .py中的私人功能中,而不是具有单独的"初始化模块",然后从包装中的每个真实模块...

不幸的是,当我尝试一下时:

foo/__ init __。py

import tables as tb
global foo
foo = tb.openFile('foo.h5', etc._)
import bar

foo/bar/__ init __。py

import tables as tb
global bar
bar = foo.createGroup('/', bar)
import MyFunction`

foo/bar/myfunction.py

def MyFunction(*of foo and bar*):
   '...'

>>> import foo
>>> OUTPUT= foo.bar.MyFunction.MyFunction(INPUT)
>>> bar = foo.createGroup('/', bar)
NameError: name 'foo' is not defined

一个人如何定义全局变量而不将它们放入函数中(如下所示)?

全局变量不是全局变量,因为每位python代码都看到相同的全球群体。全球性实际上只是"模块范围";模块中定义的所有变量和函数已经是全局,并且尽可能地全局。

如果您想查看另一个模块的全球一个模块中定义的变量,则唯一的方法是将第一个模块的名称导入第二个模块... IE:

# myModule.py
foo = "bar"
# yourModule.py
from myModule import foo

最新更新