如何声明可被导入模块函数访问的全局变量
在导入的 .py 模块里面声明的任何 global
变量,依然只在它自己的模块里是全局的,同时在导入这个模块的脚本或程序中也是全局的(通过 Python 的 import
命令来实现)。
那么,如果在导入模块 X
之后,我声明了一个全局变量 Y
,我想让这个变量 Y
对于在导入的模块 X
中定义的函数是“可见的”或者说是全局的(这样我就不需要把 Y
作为参数传递给导入模块的函数)该怎么做呢?
要导入的 "myModule.py":
def printX():
print variableX
def printY():
global variableY
variableY='y'
print variableY
主程序
import myModule as myModule
myModule.printY()
print myModule.variableY
global variableX
variableX='X'
print variableX
myModule.printX() # this will result to NameError
myModule.printX()
的结果是:
NameError: global name 'variableX' is not defined
1 个回答
3
这个函数 printX
会在 myModule
这个模块里查找全局变量 variableX
。所以你应该在这里声明你的变量:
import myModule as myModule
myModule.printY()
print myModule.variableY
myModule.variableX = 10
print myModule.variableX
myModule.printX()