裝飾器的功能就是在不改變原程式代碼和不改變原程式函數的調用方式而為原程式增加功能。
閉包函數 内層函數對外層函數的變量的引用(不是全局變量)
閉包:當函數開始執行時,如果遇到了閉包,他有一個機制,
# 他會永遠開辟一個記憶體空間,将必包中的變量等值放入其中,不會随着函數的執行完畢而消失
a = 'yy'
def func1(a):
def inner():
print(a)
inner()
print(inner.__closure__) 這是判斷是否為閉包函數的 這個函數為非閉包函數
fun()
#yy
none
a = 'yy'
def func1(a):
a = 'yy'
def inner():
print(a)
inner()
print(inner.__closure__) 這是判斷是否為閉包函數的
fun()
#yy
(<cell at 0x000001D85FFE76D8: str object at 0x000001D860080D50>,)
裝飾器
def wrapper(func1):
def inner(*args,**kwargs):
pass
ret = func1(*args,**kwargs)
return ret
return inner
@wrapper
def func1(a,b,c,d): 參數可以任意設定
pass