我希望能够做到这样的事情:
#mymodule
var = None
def load():
var = something()
Run Code Online (Sandbox Code Playgroud)
其他模块:
#secondmodule
import mymodule
mymodule.load()
#thirdmodule
from mymodule import var
print var #Shouldn't be None
Run Code Online (Sandbox Code Playgroud)
但我不知道如何从模块中定义的函数引用模块变量.
这可能吗?或者我需要在每个我不想使用它的地方发布全球声明.还是我完全错了?
Evp*_*pok 64
只是改变
def load():
global var
var = something()
Run Code Online (Sandbox Code Playgroud)
全局变量从兄弟方法是只读的.更准确地说,除非将变量指定为全局变量,否则Python会将其视为本地变量,但如果本地范围中不存在该名称,则对本地变量名称的读访问权将达到模块级范围.
另请参阅在python和doc中使用"global"关键字以获取有关该global语句的更多详细信息
kin*_*all 16
你似乎主要拥有它.您只缺少"模块级"变量在Python中称为全局变量的事实.(换句话说,它们不是真正的全局性,而只是声明它们所声明的模块的全局性.)
在修改全局变量的任何函数中(您希望使名称引用另一个对象),必须将其声明为全局变量.所以你的load()功能global var在开始时需要一个.如果您只使用全局变量的值,或者它是一个可变类型(如列表)而您正在修改它,但不更改该名称所指向的对象,则无需将其声明为全局变量.
import正如您所发现的那样,该语句是如何将模块级变量从一个模块导入另一个模块的.
| 归档时间: |
|
| 查看次数: |
36684 次 |
| 最近记录: |