特别注意local()域nonloca(),看代码注释部分
nonlocal只能用于局部变量,找上层离当前函数最近一层的局部变量
#声明了nonlocal的内部函数的变量修改会影响到离当前函数最近一层的局部变量
a=11
def outer():
a = 1
def inner():
print(a)
print('inner')
b=2
def inner2():
# global a #声明了一个全局变量
nonlocal a #声明了一个上面第一层局部变量
a+=1 #不可变数据类型的修改
print(a,b)
print('inner2')
inner2()
inner()
print('**a**:',a)
outer()
print('**全局a**:',a)