python-13 闭包、nonlocal、默认值和LEGB、匿名函数
闭包 #F44336
内部函数用到了外部函数的自由变量,就形成了闭包
nonlocal语句
默认值的作用域
.__defaults__ 记录当前缺省值
__defaults__ 可以修改
不可变类型 += ,地址修改,覆盖
可变类型 +=,地址不变,就地修改
变量名解析原则LEGB #F44336
外层的变量向内层可见(向内层穿透),内层函数的局部变量在外层不可见,内层没有向外找 “就近原则”。
函数的销毁
匿名函数
{x for x in (lambda *args: map(lambda x:x+1 ,args))(*range(5))} # 高阶函数
{x for x in (lambda *args: map(lambda x:(x+1,args) ,args))(*range(5))}
(lambda x:list(x))(range(5))