構(gòu)造count裝飾器谍肤,其中要點(diǎn):
- 記錄運(yùn)行次數(shù)的counte是全局變量;
- 使用了logging日志庫(kù)去枷,用logging比用print記錄程序運(yùn)行的中間結(jié)果更專(zhuān)業(yè)些;
- 函數(shù)的名稱(chēng)屬性是 name若河;
import logging
counte= 0
def count(f):
def wrapper(*args,**kwargs):
global counte
counte += 1
result = f(*args,**kwargs)
logging.warning("%s processed %s times!"%(f.__name__,counte))
return result
return wrapper
@count
def hello(s):
print(s)
hello("well")
hello("Hello!")
hello("Word!")
運(yùn)行帶count裝飾器的函數(shù)气忠,末尾自帶函數(shù)運(yùn)行次數(shù)炕吸,可以用logging的等級(jí)控制次數(shù)輸出還是不輸出第租。
顯示結(jié)果為:
well
WARNING:root:hello processed 1 times!
Hello!
WARNING:root:hello processed 2 times!
Word!
WARNING:root:hello processed 3 times!