1. 程式人生 > >python3 閉包函數,裝飾器

python3 閉包函數,裝飾器

延遲計算 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 閉包函數,裝飾器