[英]Accessing module level variables, from within a function in the module
我希望能够做这样的事情:
#mymodule
var = None
def load():
var = something()
其他模块:
#secondmodule
import mymodule
mymodule.load()
#thirdmodule
from mymodule import var
print var #Shouldn't be None
但我不知道如何从模块中定义的 function 引用模块变量。
这可能吗? 或者我是否需要在我不想使用它的每个地方放置一个全局声明。 还是我完全错了?
只需将 function 定义更改为:
def load():
global var # this line has been added to the original code
var = something()
全局变量对兄弟方法是只读的。 更准确地说,除非将变量指定为全局变量,否则 Python 会将其视为局部变量,但如果局部变量名称不存在于本地 Z31A1FD140BE4BEF2D11E121EC9A18A.5 中,则对局部变量名称的读取访问将达到模块级别 scope。
另请参阅python 中“global”关键字的使用以及有关global
语句的更多详细信息的文档
你似乎大多拥有它。 您只缺少在 Python 中将“模块级”变量称为全局变量这一事实。 (换句话说,它们并不是真正的全局变量,而仅对声明它们的模块是全局的。)
在您修改全局变量的任何 function 中(您想让名称引用不同的对象),它必须被声明为全局的。 所以你的load()
function 一开始就需要一个global var
变量。 如果您只使用全局变量的值,或者如果它是一个可变类型(例如列表)并且您正在修改它,但不更改名称指向的 object,则无需将其声明为全局变量。
正如您所发现的, import
语句是如何将模块级变量从一个模块导入另一个模块。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.