Python嵌套函数变量赋值

Kon*_*itz 0 python

我想在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)

我想我明白错误信息的含义,但为什么会这样呢?有没有办法绕过这个?

Art*_*nka 5

用两个词 - 当给定的变量名称没有在函数中赋值时,将查找对变量的引用.使用全局 - 在这种情况下,python将在全局范围内查找i:

i = 1337

def g():
    global i
    print i
    i = 42

g()
Run Code Online (Sandbox Code Playgroud)

您可以在PEP-0227中阅读有关变量范围的更多信息