Python-裝飾器

在目標(biāo)函數(shù)前后添加功能,但又不修改目標(biāo)函數(shù)的定義,這種在代碼運(yùn)行期間動態(tài)增加功能的方式,稱之為“裝飾器”(Decorator)

import functools

# 無參數(shù)的裝飾器
def log(func):
    # 不改變目標(biāo)函數(shù)名稱__name__
    @functools.wraps(func)
    def wrapper(*args, **kw):
        print('call %s():' % func.__name__)
        return func(*args, **kw)
    return wrapper

# 使用方法
@log
def now():
    print("2022-06-01")
import functools

# 帶參數(shù)的裝飾器
def log(text):
    def decorator(func):
        # 不改變目標(biāo)函數(shù)名稱__name__
        @functools.wraps(func)  
        def wrapper(*args, **kw):
            print('%s %s():' % (text, func.__name__))
            return func(*args, **kw)
        return wrapper
    return decorator

# 使用方法
@log('execute')
def now():
    print('2015-3-25')
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 之前寫Flask應(yīng)用的時候就用過,但是無奈那時候水平太低,還沒有研究到這里。最近我就決定把Python的這些高級概...
    KevinCool閱讀 598評論 0 0
  • 一、前言 python裝飾器本質(zhì)上就是一個函數(shù),它可以讓其他函數(shù)在不需要做任何代碼變動的前提下增加額外的功能,裝飾...
    沖鋒丘丘人閱讀 374評論 0 0
  • 裝飾器 裝飾器本質(zhì)上是一個Python函數(shù),它可以讓其他函數(shù)在不需要做任何代碼變動的前提下增加額外功能,裝飾器的返...
    時間之友閱讀 2,449評論 0 3
  • 什么是裝飾器? 我們先了解一下基本概念:它的本質(zhì)就是一個函數(shù),可以讓其他函數(shù)在不需要做任何代碼變動的前提下增...
    獨(dú)孤蝴蝶閱讀 248評論 0 1
  • 說到裝飾器,很明顯就是用來裝飾的,既然是要裝飾,那肯定是在保留原有的基礎(chǔ)上再添加一些東西作為裝飾,這就是我對裝飾器...
    張氏小毛驢閱讀 298評論 0 0

友情鏈接更多精彩內(nèi)容