python學習01--裝飾器

簡單的裝飾器

def log(f):
    def a(*args,**kw): #wrapper
        print('call %s()' % f.__name__)
        return f(*args,**kw)
    return a

#函數聲明,添加裝飾器,注意這裏的log和log()不一樣,與後面的代碼對比着看
@log
def decrator():
    print("run decrator")

運行
decrator()

添加text

import functools as ft
#升級版,添加文本
def log(text):
    def decorator(f):
        @ft.wraps(f)
        def wrapper(*args , **kw):
            print('%s %s()' % (text . f.__name__))
            return f(*args, **kw)
        return wrapper
    return decorator

#這裏與前面對比,如果是log()那麼會將()中的參數傳給裝飾器第一層,而不是上面的簡單裝飾器直接將函數傳遞給裝飾器
@log('execute')
def de():
    print("run de")
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章