python编写一个带参数的装饰器

 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()

 

posted @ 2021-06-03 20:58  年轻人——001  阅读(152)  评论(0编辑  收藏  举报