python之裝飾器 函式

2022-04-20 09:11:28 字數 1047 閱讀 5655

1. 裝飾器

遵循的原則:

開閉原則:   對功能的擴充套件開放  對**的修改是封閉

#

通用裝飾器寫法

#存在的意義: 在不破壞原有函式和原有函式呼叫的基礎上,給函式新增新的功能.

fn是目標函式

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

為了目標函式的傳參

'''在執行目標函式之前

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

呼叫目標函式, ret是目標函式的返回值

'''在執行目標函式之前

'''return ret #

把目標函式返回值返回, 保證函式正常的結束

return

inner

#def

target_func():

pass

target_func()

#此時執行的是inner

2. 帶引數的裝飾器

裝飾器本身的引數

目標函式

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

目標函式需要的引數

if flag == true: #

判斷是否需要裝飾

print('

問問老闆,**怎麼樣啊?')

ret = fn(*args, **kwargs)

print('

騙我!!')

return

ret

else: #

不需要裝飾

ret = fn(*args, **kwargs)

return

ret

return

inner

return##

def yue(): #

print('

走,開團')

yue()

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

deffunc():

pass

#1 2 3 func 3 2 1

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...