繁体   English   中英

从模块中的 function 访问模块级变量

[英]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.

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