#带参数的装饰器1
def debug(func):
def wrapper(*args,**kwargs): #定宇宙无敌参数
print "[DEBUG]: enter {}()".format(func.__name__)
return func(*args,**kwargs)
return wrapper
@debug
def say(somthing):
print "hello {}".format(somthing)
if __name__=='__main__':
say("nihao")
>>[DEBUG]: enter say()
hello nihao
#带参数的装饰器2
def logging(level):
def wrapper(func):
def inner_wrapper(*args,**kwargs):
print "[{level}]: enter {func}()".format(level=level,func=func.__name__)
return func(*args,**kwargs)
return inner_wrapper
return wrapper
@logging(level='INFO')
def say1(somthing):
print "hello {}".format(somthing)
@logging(level='DEBUG')
def do(somthing):
print "do {}".format(somthing)
if __name__=='__main__':
say1("nihao")
do('work')>>[INFO]: enter say1()
hello nihao
[DEBUG]: enter do()
do work