python 之 帶引數的裝飾器

2021-08-26 12:13:49 字數 795 閱讀 2307

from functools import wraps

deflogit

(logfile='out.log'):

deflogging_decorator

(func):

@wraps(func)

def(*args, **kwargs):

log_string = func.__name__ + " was called"

print(log_string)

# 開啟logfile,並寫入內容

with open(logfile, 'a') as opened_file:

# 現在將日誌打到指定的logfile

opened_file.write(log_string + '\n')

return func(*args, **kwargs)

return logging_decorator

@logit()

defmyfunc1

():pass

myfunc1()

# output: myfunc1 was called

# 現在乙個叫做 out.log 的檔案出現了,裡面的內容就是上面的字串

@logit(logfile='func2.log')

defmyfunc2

():pass

myfunc2()

# output: myfunc2 was called

# 現在乙個叫做 func2.log 的檔案出現了,裡面的內容就是上面的字串

python 帶引數裝飾器

在前面一文 python裡為什麼需要使用裝飾器 decorator 裡,我們學習了為什麼需要裝飾器,知道裝飾器就是為了不修改原來函式的 又達到增加功能的作用。其實為了裝飾器更通用化,那麼裝飾器是否也可以帶引數呢?其實是可以的,這樣更加通用化了,達到共享極點。在前面也學習 為什麼要使用閉包 closu...

python 實現帶引數的裝飾器

coding utf8 author bluesli defbefore request,kwarg print before defafter request,kwarg print after deffilter before fun,after fun defouter main fun de...

python帶引數的類裝飾器

coding utf 8 author baoshan 帶引數的類裝飾器 和不帶引數的類裝飾器有很大的不同 類裝飾器的實現,必須實現 call 和 init 兩個內建函式。init 不再接收被裝飾函式,而是接收傳入引數 call 接收被裝飾函式,實現裝飾邏輯 class logger object ...