版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/gang950502/article/details/81207701
'''
装饰器(decorator)
简单的来说就是一个可以增强函数功能的函数。装饰器可以快捷的将一部分功能添加到一个函数上,在调用函数时,会率先调用
该函数的装饰函数,通过装饰函数来执行该函数。如下边的一段代码,我们希望得到这些函数的调用栈,用来看调试信息,这样
这样就可以定义一个装饰器,用来观察函数的调用实参,函数返回值。或许也需要知道函数的执行时间。此时通过这段装饰器的
代码快速实现这个功能,并且可以也可以快速的关闭这个功能。
'''
import datetime
def stack(func):
def wrapper(*args,**kw):
print('[%s]call start [%s()] <- (%s)' % (now_time(),func.__name__,return_args(args)))
rst = func(*args,**kw)
print('[%s]call end [%s()] -> (%s)' % (now_time(),func.__name__,rst))
def return_args(args):
str_args = ""
for item in args:
str_args += "%s," % (item,)
str_args = str_args[0:-1]
return str_args
def now_time():
now = datetime.datetime.now()
return now.strftime('%Y-%m-%d %H:%M:%S')
return wrapper
@stack
def get_date(dates):
return True
@stack
def get_user(user,pwd):
return False
@stack
def get_many(some_str):
get_date('2018-09-01')
get_user('gggs2','123')
if __name__ == '__main__':
get_date('2015-08-09')
get_user('gggs','pwds')
get_many('jiu shi diao')
程序运行结果: