在Python中全局变量是如何工作的?我知道全局变量不好,我只是在做实验。
这样写在Python中是无效的:
G = None
def foo():
if G is None:
G = 1
foo()
我遇到了一个错误:
UnboundLocalError: local variable 'G' referenced before assignment
我做错了什么?
在Python中全局变量是如何工作的?我知道全局变量不好,我只是在做实验。
这样写在Python中是无效的:
G = None
def foo():
if G is None:
G = 1
foo()
我遇到了一个错误:
UnboundLocalError: local variable 'G' referenced before assignment
我做错了什么?
G
声明为global
,但是为什么呢?因为在函数内部引用变量时,如果你在该函数的任何地方进行了变量的赋值,Python 就会认为它是一个局部变量。所以如果此时在代码中不存在同名的局部变量,就会出现UnboundLocalError
的报错。如果你实际上想引用全局变量(正如你在问题中所述),你需要使用global
关键字告诉 Python 这就是你想要的。G = None
def foo():
if G is None:
print G
foo()
这段代码打印出None
,并且不会引发UnboundLocalError错误。
你仍然需要在该函数内声明G为全局变量:
G = None
def foo():
global G
if G is None:
G = 1
foo()
print G
这仅仅输出
1
像这样在函数中将G定义为全局变量:
#!/usr/bin/python
G = None;
def foo():
global G
if G is None:
G = 1;
print G;
foo();
1
。