nonlocal 关键字 作用:用来修改局部变量
-
nonlocal 修改局部变量时,采用LEGB原则
-
当前函数空间如果找不到,跳出这一层,到上一层寻找 [nonlocal 修改局部变量]
def outer(): a = 1 def inner(): nonlocal a # 用来修改当前空间上一层的局部变量 a = 2 print(a) inner() print(a) outer() # 21 # 12 # 11 # 22
-
如果上一层不存在该变量,继续向上一层寻找
a = 300 def outer(): a = 200 def inner(): a = 100 def smaller(): nonlocal a a = 400 smaller() print(a) inner() print(a) outer() print(a) # 400 200 300 升级 a = 300 def outer(): a = 200 def inner(): def smaller(): nonlocal a a = 400 smaller() print(a) inner() print(a) outer
-