Python 中的全局变量如何工作?我知道全局变量是邪恶的,我只是在尝试。
这在Python中不起作用:
G = None
def foo():
if G is None:
G = 1
foo()
我收到错误:
UnboundLocalError: local variable 'G' referenced before assignment
我做错了什么?
G
声明为
global
,但至于原因:每当您在函数内引用变量时,如果您在该函数中的任何位置set 该变量,Python 都会假定它是局部变量。因此,如果代码中此时不存在该名称的局部变量,您将得到
UnboundLocalError
。如果您实际上是想引用全局变量,就像您的问题一样,您需要
global
关键字来告诉 Python 这就是您的意思。如果您不在函数中的任何位置分配给变量,而仅访问其值,Python 将使用该名称的全局变量(如果存在)。所以你可以这样做:
G = None
def foo():
if G is None:
print G
foo()
此代码打印
None
并且不会抛出 UnboundLocalError。
G = None
def foo():
global G
if G is None:
G = 1
foo()
print G
它只是输出
1