从模块中的函数内访问模块级variables
我希望能够做到这样的事情:
#mymodule var = None def load(): var = something()
其他模块:
#secondmodule import mymodule mymodule.load() #thirdmodule from mymodule import var print var #Shouldn't be None
但我不知道如何从模块中定义的函数引用模块variables。
这可能吗? 或者我需要在每个我不想使用这个地方的全球声明。 还是我在这个完全错误?
只是改变
def load(): global var var = something()
全局variables是只读同级方法。 更准确地说,除非一个variables被指定为全局variables,否则Python将其视为本地variables,但是如果名称不在本地范围内,则对局部variables名称的读取访问将达到模块级范围。
有关global
语句的更多详细信息,另请参阅在python和doc中 使用“global”关键字
你似乎大多有它。 您只是错过了“模块级”variables在Python中被称为global的事实。 (换句话说,它们并不是真正的全球性的,而只是全球性的)。
在你修改一个全局variables的任何函数中(你想让这个名称指向一个不同的对象),它必须声明为全局variables。 所以你的load()
函数在开始时需要一个global var
variables。 如果您只使用全局variables的值,或者如果它是一个可变types(如列表),并且正在修改它,但不更改名称指向的对象,则无需将其声明为全局。
正如你所发现的那样, import
语句是如何将一个模块级variables从一个模块导入到另一个模块中的。