全局 global
1 def tester(start):2 global state3 state = start4 def nested(label):5 global state6 print(label,state)7 state += 18 return nested # 都声明为全局,只会保存一个副本,会覆盖
非本地 nonlocal
1 def tester(start):2 state = start3 def nested(label):4 nonlocal state5 print(label,state)6 state += 17 return nested # Python3 主流 但是作用域只能是嵌套作用域
类 class
1 class nested():2 def __init__(self,state):3 self.state = state4 def __call__(self,label):5 print(self.state,label)6 self.state += 1 # 有点老了
函数属性 函数名.变量名
1 def tester(start):2 def nested(label):3 print(label,nested.state)4 nested.state += 15 nested.state = start6 return nested # 未曾用过的黑魔法,这回就知道了