繁体   English   中英

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

[英]Python: Can i set global variables in a package __init__ module?

所以我正在阅读 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

如何定义没有把它们的功能(如看到全局变量这里)?

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM