Python函式 裝飾器

2021-09-19 20:41:10 字數 813 閱讀 7955

裝飾器的定義

給已有函式增加額外的功能的函式, 本質上和閉包類似

遵循封閉開放的**原則

裝飾器的特點

裝飾器的語法糖用法

語法糖的理解:

形象的理解為,加了一層糖衣包裝,.但是本質不便還是一顆糖

函式還是函式,但是在函式外部進行了處理,從而達到裝飾的作用

裝飾器的使用
# 第一步閉包

# 第二步@語法糖

def set_fun(func): # 這個就是傳入要被裝飾的函式名或者叫引用

def call_fun():

# 呼叫原先的函式

func()

return call_fun

@set_fun # @set_fun ===> test = set_fun(test),這個就是語法糖的使用,前面是@後面跟上閉包的外層函式的名字即可,不加括號

def test():

print("test")

test()

上面出來了神奇的一幕,竟然先執行了函式set_fun最後在執行了函式自身的**.這個就是裝飾器的作用,test是原本的業務**,我們遵循封閉開放的原則,在不改動原先**的時候,同時也新增了新的功能.

這個函式執行的順序是可變的,有需求是需要先列印test函式輸出,最後在呼叫語法糖的內容,只需要吧func()放在print前面即可,不管是否是在前在後都是可以的.

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