Python核心編程筆記(裝飾器)

裝飾器

  1. 裝飾器就是一個裝飾函數的函數。裝飾器是在函數調用之上的修飾。這些修飾僅是聲明一個函數或方法的時候,纔會應用的額外調用。
  2. 以@開頭,然後是裝飾器的名字和可選的參數。
# 裝飾器沒有參數,以下第二和第三處代碼塊等價
def deco1():
    pass

def foo():
    pass
foo = deco1(foo) 

@deco1
def foo():
    pass

# 如果裝飾器帶參數的話,以下第二和第三處代碼塊等價
def deco2(args):
    pass

def bar():
    pass
bar = deco2(args)(bar)

@deco2(args)
def bar():
    pass

# 實際例子
from time import ctime, sleep

def tsfunc(func):
    def wrappedFunc():
        print('[%s] %s() called' % (ctime(), func.__name__))
        return func()   # 調用一下
    return wrappedFunc  # 返回修飾後的函數

@tsfunc
def foo(): # 等價於 foo = tsfunc(foo)
    pass

for i in range(3):
    foo()
    sleep(1)
發佈了79 篇原創文章 · 獲贊 92 · 訪問量 14萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章