装饰器

那么什么是装饰器?

现在我们知道装饰器实际就是函数,我们也知道他们接受函数对象。但它们是怎样处理那些函数的呢?

一般来说,当你包装一个函数的时候,你最终会调用它。

最棒的是我们能在包装的环境下在合适的时机调用它,我们在执行函数之前,可以运行写预备代码。

def foo():
    print 'aaaaaaa'
a=foo()
print a

C:Python27python.exe C:/Users/TLCB/PycharmProjects/untitled/mycompany/ddd/a16.py
aaaaaaa
None


from time import ctime,sleep
def tsfunc(func):
    def wrappendFunc():
        print '[%s] %s() called' % (ctime(), func.__name__)
        return func()
    return wrappendFunc
@tsfunc
def foo():
    print 'aaaaaaa'
a=foo()
print a

C:Python27python.exe C:/Users/TLCB/PycharmProjects/untitled/mycompany/eee/a2.py
[Tue Apr 24 11:26:50 2018] foo() called
aaaaaaa
None


在启动和模块导入代码之后,tsfunc()函数是一个显示何时调用函数的时戳的装饰器。

它定义了一个内部的函数wrappedFunc(),该函数增加了时戳以及调用了目标函数。

装饰器的返回值是一个"包装了"的函数

原文地址:https://www.cnblogs.com/hzcya1995/p/13349230.html