对于嵌套函数而言,无法通过global来使用变量,所以通过使用nonlocal来处理这类问题。
def A():
def A1():
a=12
return a
def A2():
nonlocal a=12
return a
def A3():
global a=123
return a
a=1
print(A1)
print(A2)
print(A3)
输出
1
12
12
可以看到通过global声明的变量并没有完成对其的赋值操作,故嵌套函数中不能通过global来对最外层的变量进行操作,为了弥补这一缺陷使用nonlocal来声明处理。