我想在python3中按照以下几行做一些事情:
i = 1337
def g():
print(i)
i = 42
g()
Run Code Online (Sandbox Code Playgroud)
但得到以下错误
UnboundLocalError: local variable 'i' referenced before assignment
Run Code Online (Sandbox Code Playgroud)
我想我明白错误信息的含义,但为什么会这样呢?有没有办法绕过这个?
用两个词 - 当给定的变量名称没有在函数中赋值时,将查找对变量的引用.使用全局 - 在这种情况下,python将在全局范围内查找i:
i = 1337
def g():
global i
print i
i = 42
g()
Run Code Online (Sandbox Code Playgroud)
您可以在PEP-0227中阅读有关变量范围的更多信息