python-装饰器1

版权声明:本文为博主原创文章,未经博主允许不得转载。 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')

程序运行结果:

猜你喜欢

转载自blog.csdn.net/gang950502/article/details/81207701