Python函式的裝飾器

2022-08-18 05:36:19 字數 1486 閱讀 6227

函式的裝飾器.

1. 裝飾器

開閉原則:

對功能的擴充套件開放

對**的修改是封閉

通用裝飾器語法:

def

def inner(*args, **kwargs): #

聚合"""

在目標函式之前的內容

"""ret = fn(*arg, **kwargs) #

打散"""

在目標函式之後的內容

"""return

ret

return

inner

deffunc():

pass

func()

2. 同乙個函式被多個裝飾器裝飾

就近原則

def

def inner(*args, **kwargs):

print("1"

) ret = fn(*args, **kwargs)

print("2"

)

return

ret

return

inner

def

def inner(*args, **kwargs):

print("3"

) ret = fn(*args, **kwargs)

print("4"

)

return

ret

return

inner

def

def inner(*args, **kwargs):

print("5"

) ret = fn(*args, **kwargs)

print("6"

)

return

ret

return

inner

#順序 1 2 3 func 3 2 1

deffunc():

print("

我是誰,我在哪")

func()

#1 3 5 我是誰,我在哪 6 4 2

3. 帶引數的裝飾器

def

def

def inner(*args, **kwargs): #

聚合"""

在目標函式之前的內容

"""ret = fn(*arg, **kwargs) #

打散"""

在目標函式之後的內容

"""return

ret

return

inner

return

#執行的時候. 先執行函式的呼叫然後使用返回值和前面的@組合成裝飾器語法糖

deffunc():

pass

python裝飾器 函式裝飾器,類裝飾器

只要實現此 模式,這個obj就叫乙個裝飾器 參考 函式裝飾器 例子 def decorator func def inner args,kwargs print before.res func args,kwargs print after.return res return inner decor...

python 裝飾器 函式裝飾器 類裝飾器

python函式裝飾器和類裝飾器筆記.usr bin env python coding utf 8 author ivan file decorators.py version from functools import wraps 裝飾器 目的是為了給函式新增附加功能 1.不帶引數裝飾器 此方式...

python裝飾器 裝飾器工廠函式

使用裝飾器實現如下所示的列印 小白聯盟def printequel func1 def inner1 print 15 func1 return inner1 def printstar func2 def inner2 print 15 func2 return inner2 printequel...