1 from functools import wraps 2 import logging 3 4 def logged(level,name=None,message=None): 5 def decorate(func): 6 logname=name if name else func.__module__ 7 print(logname) 8 log=logging.getLogger(logname) 9 logmsg=message if message else func.__name__ 10 print(logmsg) 11 12 @wraps(func) 13 def wrapper(*args,**kwargs): 14 log.log(level,logmsg) 15 return func(*args,**kwargs) 16 return wrapper 17 return decorate 18 19 20 @logged(logging.DEBUG) 21 def add(x,y): 22 print(x,y) 23 return x+y 24 25 add(3,4) 26 27 28 @logged(logging.CRITICAL,"example") 29 def spam(): 30 print("Spam") 31 32 spam()
python编写一个带参数的装饰器
全世界的程序员们联合起来吧!