所以我正在阅读 Alex Martelli 对其他问题的回答......
“我可能想要初始化的一个例子是,在包加载时,我想一劳永逸地读取一堆数据(比如从文件、数据库或网络)——在这种情况下,它会好得多将该读取放入包的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
如何定义全局变量而不将它们放入函数中(如此处所示)?