日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

python函数-装饰器

發布時間:2023/12/10 python 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python函数-装饰器 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

python函數-裝飾器

1.裝飾器的原則--開放封閉原則

?開放:對于添加新功能是開放的

封閉:對于修改原功能是封閉的

2.裝飾器的作用

在不更改原函數調用方式的前提下對原函數添加新功能

3.裝飾器的本質--閉包

4.裝飾器

  (1)簡單的裝飾器

def deco(f):def wrapper():"""原函數前添加的功能"""f()"""原函數后添加的功能"""return wrapperdef func():print('這是原函數!')func = deco(func) func()

  (2)裝飾器的語法糖-----@deco

def deco(f):def wrapper():"""原函數前添加的功能"""f()"""原函數后添加的功能"""return wrapper@deco # ——>此處效果等同于 func = deco(func) def func():print('這是原函數')func()

  (3)帶返回值的裝飾器

def deco(f):def wrapper():"""原函數前添加的功能"""res = f()"""原函數后添加的功能"""return resreturn wrapper@deco def func():print('這是原函數') func()

  (4)裝飾器加參數的固定格式

def deco(f):def wrapper(*args,**kwargs):"""原函數前添加的功能"""res = f(*args,**kwargs)"""原函數后添加的功能"""return resreturn wrapper@deco def func(*args,**kwargs):print('這是原函數') func()

  (5)裝飾器的固定格式--wraps版

from functools import wrapsdef wrapper(func):@wraps(func)def inner(*args,**kwargs):print('在被裝飾的函數執行之前做的事')ret = func(*args,**kwargs)print('在被裝飾的函數執行之后做的事')return retreturn inner @wrapper def holiday(day):print("新年快樂")return '好開心' print(holiday.__name__) print(holiday.__doc__) ret = holiday(3) print(ret)>>>> holiday None 在被裝飾的函數執行之前做的事 新年快樂 在被裝飾的函數執行之后做的事 好開心

  

(6) 多個裝飾器裝飾一個函數 

def wrapper1(func):def inner1():print('wrapper1 ,before func')func()print('wrapper1 ,after func')return inner1def wrapper2(func):def inner2():print('wrapper2 ,before func')func()print('wrapper2 ,after func')return inner2@wrapper2 # 將inner1進行裝飾,即inner1 = wrapper2(inner1) = inner2 @wrapper1 # 先執行這個裝飾器,即f = wrapper1(f) = inner1 def f():print('in f')f()>>>> wrapper2 ,before func wrapper1 ,before func in f wrapper1 ,after func wrapper2 ,after func

  

  

轉載于:https://www.cnblogs.com/a438842265/p/8467705.html

總結

以上是生活随笔為你收集整理的python函数-装饰器的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。