构造count装饰器,其中要点:
- 记录运行次数的counte是全局变量;
- 使用了logging日志库,用logging比用print记录程序运行的中间结果更专业些;
- 函数的名称属性是 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!")
运行带count装饰器的函数,末尾自带函数运行次数,可以用logging的等级控制次数输出还是不输出。
显示结果为:
well
WARNING:root:hello processed 1 times!
Hello!
WARNING:root:hello processed 2 times!
Word!
WARNING:root:hello processed 3 times!