-
Python中的 LEGB(作用域链)
L:局部变量–local
E:外层函数/闭包空间–enclosing function
G:全局变量–global
B:内建模块–builtins当找一个变量时,现在 local 找,即先找本函数内的变量,若找到则结束;
否则,找闭包空间,即外层函数,从内向外一个一个找,若找到则结束;
否则,找全局变量,若找到则结束;
否则,找内建模块中的变量,若找到则结束。 -
内层函数使用nonlocal找全局变量和内层函数内变量之间的所有重名变量
多层的话,先找到哪一个就是哪一个
a=1 def out(): a=100 def inner(): nonlocal a a=a*2 print(a) return inner out()() # 200
Python-17-变量作用域LEGB(作用域链)
最新推荐文章于 2023-02-12 09:54:34 发布