从模块访问全局变量?

时间:2020-06-14 09:17:05

标签: python module global-variables

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

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

fun()

当然会在控制台中显示“ 3”。

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

from mymod import *
gvar=3
fun()

结果是一个NameError异常(找不到gvar

我该如何解决?我不得不提到,我需要访问名称并不总是相同的各种全局变量(上下文很复杂,因此我现在不对其进行描述以关注我目前遇到的问题)

3 个答案:

答案 0 :(得分:2)

python具有的唯一全局变量是模块范围的。因此,在您的情况下,变量var_list = [1,2,3,4,5,6,...,50] var1 = 1 var2 = 2 ........ var50 = 50 在模块gvar中不可见。

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

答案 1 :(得分:1)

只需将gvar移至mymod。除非您需要独立访问其值,否则您甚至不需要import

换句话说,不要尝试将gvar用作真正的全局变量,而应将其保留为mymod的实现细节。

答案 2 :(得分:0)

我认为您做错了这件事,而不是将变量制成一个脚本并尝试使用第一个变量在另一个脚本中执行功能,您还可以将变量发送到函数的函数头 > !!

因此,在您的情况下,您的功能将类似于

def fun(var): 
    print(gvar)

并使用以下命令从另一个脚本调用函数:

gvar = 5
fun(gvar)