4

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

def outer():
    a = 1
    def inner():
        print a

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

def outer():
    a = []
    def inner():
        a.append(1)
        print a

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

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

>> UnboundLocalError: local variable 'a' referenced before assignment

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

4

3 回答 3

5

在 Python 3 中,您可以使用nonlocal关键字来执行此操作。nonlocal a在开头做inner标记a为非本地。

在 Python 2 中这是不可能的。

于 2012-12-21T07:01:10.333 回答
3

通常更清洁的方法是:

def outer():
    a = 1
    def inner(b):
        b += 1
        return b
    a = inner(a)

Python 允许的很多,但非局部变量通常可以被认为是“脏”的(这里不再赘述)。

于 2012-12-21T07:04:18.123 回答
3

Python 2 的解决方法:

def outer():
    a = [1]
    def inner():
        a[0] += 1
        print a[0]
于 2012-12-21T07:43:53.123 回答