Python 从模块访问全局变量?
让我们从使用全局变量的基本代码开始:Python 从模块访问全局变量?,python,module,global-variables,Python,Module,Global Variables,让我们从使用全局变量的基本代码开始: def fun(): print(gvar) gvar = 3 fun() 这当然会在控制台中打印“3” 然后,我将函数“fun”移动到模块“mymod”中,并执行以下操作: from mymod import * gvar=3 fun() 结果是NameError异常(gvar未找到) 我怎样才能解决这个问题?我必须提到,我需要访问不同的全局变量,这些变量的名称并不总是相同的(上下文很复杂,我现在不描述它来关注我现在遇到的问题)只需将gvar
def fun():
print(gvar)
gvar = 3
fun()
这当然会在控制台中打印“3”
然后,我将函数“fun”移动到模块“mymod”中,并执行以下操作:
from mymod import *
gvar=3
fun()
结果是NameError异常(gvar
未找到)
我怎样才能解决这个问题?我必须提到,我需要访问不同的全局变量,这些变量的名称并不总是相同的(上下文很复杂,我现在不描述它来关注我现在遇到的问题)只需将
gvar
移动到mymod
。您甚至不需要导入它,除非您需要独立地访问它的值
换句话说,不要试图将
gvar
用作真正的全局变量,而是将其作为mymod
的实现细节 python仅有的全局变量是模块范围的。因此,在您的情况下,变量gvar
在模块mymod
中不可见
如果要在导入的模块中使用
gvar
,请将gvar
作为参数传递给mymod
函数。如果gvar
属于mymod
,请在那里定义它。我认为您这样做是错误的,而不是将一个变量放入一个脚本并尝试使用第一个变量在另一个脚本中执行函数,您还可以将变量发送到函数的函数头
所以在你的例子中,你的函数是
并使用以下命令从另一个脚本调用函数:
在我工作的环境中,这是不可能的。我正在寻找其他的解决方案。谢谢你的回答,但这与我的问题不符。
def fun(var):
print(gvar)
gvar = 5
fun(gvar)