从python内部函数修改函数变量

wai*_*kuo 4 python variables scope function

获取并打印外层函数变量就可以了 a

def outer():
    a = 1
    def inner():
        print a
Run Code Online (Sandbox Code Playgroud)

获取外部函数数组a并附加一些内容也可以

def outer():
    a = []
    def inner():
        a.append(1)
        print a
Run Code Online (Sandbox Code Playgroud)

但是,当我尝试增加整数时,它引起了一些麻烦:

def outer():
    a = 1
    def inner():
        a += 1 #or a = a + 1
        print a

>> UnboundLocalError: local variable 'a' referenced before assignment
Run Code Online (Sandbox Code Playgroud)

为什么会发生这种情况,我如何才能实现我的目标(增加整数)?

Bre*_*arn 5

在 Python 3 中,您可以使用nonlocal关键字执行此操作。难道nonlocal a之初inner到标记a为外地。

在 Python 2 中这是不可能的。


cod*_*ape 3

Python 2 的解决方法:

def outer():
    a = [1]
    def inner():
        a[0] += 1
        print a[0]
Run Code Online (Sandbox Code Playgroud)