python3 閉包函數,裝飾器
阿新 • • 發佈:2017-06-19
延遲計算 microsoft urn imm 目標 執行順序 rgs 新功能 func
閉包函數:
1、定義在函數內部的函數
2、包含對外部作用域而非全局作用域的引用
特點:
1、自帶作用域
2、延遲計算(取到內存地址,加括號執行)
def 外部函數(func):
def 內部函數(*args,**kwargs):
pass
return 內部函數
f=外部函數(func)
print(f.__closure__)
print(f.__closure__[0].cell_contents)
優點:
1 自帶作用域
2 惰性延遲
1、開放封閉原則,對擴展是開房的,對修改是封閉的
2、裝飾器:裝飾器本質是可以任意調用對象,被裝飾的對象也可以是任意可調用對象
功能:在不修改被裝飾對象源代碼以及調用方式的前提下,對其添加新功能
原則:
1、不修改源代碼
2、不修改調用方式
目標:添加新功能
裝飾器
1 開放封閉原則:對擴展開放,對修改(修改源代碼和調用方式)是封閉的
2 什麽是裝飾器:裝飾器本質是任意可調用對象,被裝飾器對象也可以是任意可調用對象
裝飾器遵循的原則:不修改被裝飾對象的源代碼和調用方式
3 定義裝飾器
def 外部函數(func):
def 內部函數(*args,**kwargs):
pass
return 內部函數
4 裝飾器的語法:@
1.卸載被裝飾對象的正上方單獨一行
2.可疊加多個,執行順序是自下而上
定義階段外部函數的執行順序是自下而上
調用階段內部函數的執行順序是自上而下
@timmer #index=timmer(index)
def index():
pass
python3 閉包函數,裝飾器