从模块中的函数内访问模块级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 varvariables。 如果您只使用全局variables的值,或者如果它是一个可变types(如列表),并且正在修改它,但不更改名称指向的对象,则无需将其声明为全局。

正如你所发现的那样, import语句是如何将一个模块级variables从一个模块导入到另一个模块中的。