让我们从使用全局变量的基本代码开始:
def fun():
print(gvar)
gvar = 3
fun()
当然,在控制台中打印" 3"。
然后,我将我的函数"fun"移动到模块"mymod"中,并执行以下操作:
from mymod import *
gvar=3
fun()
结果是名称错误异常(gvar
未找到(
我该如何解决这个问题?我必须提到,我需要访问名称并不总是相同的各种全局变量(上下文很复杂,我现在不描述它以专注于我现在遇到的问题(
python 唯一的全局变量是模块范围的。因此,在您的情况下,变量gvar
在模块mymod
中不可见。
如果要在导入的模块中使用gvar
,请将gvar
作为参数传递给mymod
的函数。如果gvar
属于mymod
,则在此处定义它。
只需将gvar
移动到mymod
即可。您甚至不需要import
它,除非您需要独立访问其值。
换句话说,不要试图将gvar
用作真正的全局,而是将其保留为mymod
的实现细节。
我认为你做错了这件事,而不是将变量变成一个脚本并尝试使用第一个变量在另一个脚本中执行函数,你也可以将变量发送到函数的函数头!!
所以在你的情况下,你的函数会像
def fun(var):
print(gvar)
并使用以下命令从另一个脚本调用函数:
gvar = 5
fun(gvar)