先说结论:
嵌套函数(如闭包,修饰器等),需要修改全局变量时,如果全局变量是不可变类型,那么在修改全局变量时要先写‘global 变量名‘,此时才可以修改;如果全局变量是可变类型,则可以直接修改。
for一颗栗子
from functools import wraps
tag = False #不可变类型的全局变量
def auth(name=None):
def app(func):
上下两个例子分别使用了三层和两层函数,注意两者修饰器引用上的区别,还有全局变量和函数内变量之间的关系(name)
from functools import wraps
tag = {'name':None,'pwd':False} #字典是可变类型,修改字典时不会修改tag所对应的数据路径
def app(func):