如何声明可被导入模块函数访问的全局变量

4 投票
1 回答
708 浏览
提问于 2025-04-18 18:31

在导入的 .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()

撰写回答