首页 > 解决方案 > 从模块访问全局变量?

问题描述

让我们从使用全局变量的基本代码开始:

def fun():
    print(gvar)
gvar = 3

fun()

那当然会在控制台中打印“3”。

然后,我将我的函数“fun”移动到模块“mymod”中,然后执行以下操作:

from mymod import *
gvar=3
fun()

结果是 NameError 异常(gvar未找到)

我该如何解决这个问题?不得不提一下,我需要访问各种名称并不总是相同的全局变量(上下文很复杂,我现在不描述它以专注于我现在遇到的问题)

标签: pythonmoduleglobal-variables

解决方案


python 唯一的全局变量是模块范围的。因此,在您的情况下,该变量gvar在模块中不可见mymod

如果要gvar在导入的模块中使用,请将其gvar作为参数传递给mymod. 如果gvar属于mymod,则在此处定义。


推荐阅读