zoukankan      html  css  js  c++  java
  • 装饰器

    那么什么是装饰器?
    
    现在我们知道装饰器实际就是函数,我们也知道他们接受函数对象。但它们是怎样处理那些函数的呢?
    
    一般来说,当你包装一个函数的时候,你最终会调用它。
    
    最棒的是我们能在包装的环境下在合适的时机调用它,我们在执行函数之前,可以运行写预备代码。
    
    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(),该函数增加了时戳以及调用了目标函数。
    
    装饰器的返回值是一个"包装了"的函数
    

  • 相关阅读:
    cocos3 单击
    cocos3 帧动画
    cocos3 动作和帧动画
    cocos3 场景切换特效
    cocos3 场景切换
    cocos3 error C2440
    c++ 匿名函数
    【leetcode】生成每种字符都是奇数个的字符串
    【leetcode】山羊拉丁文
    【leetcode】字符串的最大公因子
  • 原文地址:https://www.cnblogs.com/hzcya1995/p/13349230.html
Copyright © 2011-2022 走看看