可以获取并打印外部函数变量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
为什么会发生这种情况?如何实现目标(增加整数)?
答案 0 :(得分:4)
在Python 3中,您可以使用nonlocal
关键字执行此操作。在nonlocal a
开头inner
将a
标记为非本地。
在Python 2中,这是不可能的。
答案 1 :(得分:3)
通常更清洁的方法是:
def outer():
a = 1
def inner(b):
b += 1
return b
a = inner(a)
Python允许很多,但非局部变量通常可以被视为“脏”(这里不再详述)。
答案 2 :(得分:3)
Python 2的解决方法:
def outer():
a = [1]
def inner():
a[0] += 1
print a[0]