先說結論:
巢狀函式(如閉包,修飾器等),需要修改全域性變數時,如果全域性變數是不可變型別,那麼在修改全域性變數時要先寫‘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):