zoukankan      html  css  js  c++  java
  • Python装饰器示例

    简单装饰器实现:

    import time
    #简单装饰器
    def show_time(f):
        #嵌套函数
        def inner():
            begin = time.time()
            f()
            end = time.time()
            print('spend %s'%(end-begin))
        return inner
    
    @show_time  #foo=show_time(foo)
    def foo():
        print('foo...')
        time.sleep(1)
    foo()

    不定长参数装饰器:

    #不定长参数,功能函数加参数
    def show_time(f):
        #嵌套函数
        def inner(*a,**b):
            begin = time.time()
            f(*a,**b)
            end = time.time()
            print('spend %s'%(end-begin))
        return inner
    
    @show_time  #foo=show_time(foo)
    def foo(*a,**b):
        sums=0
        for i in a:
            sums+=i
        print(sums)
        time.sleep(1)
    foo(1,2,3,4,5)

    装饰器函数加参数:

    #装饰器函数加参数
    def logger(flag):
        def show_time(f):
            #嵌套函数
            def inner(*a,**b):
                begin = time.time()
                f(*a,**b)
                end = time.time()
                print('spend %s'%(end-begin))
                #判断flag传参,之后所做的事情
                if flag == 'true':
                    print('哈哈哈哈')
            return inner
        return show_time
    
    #传参为true,则执行logger的内容
    @logger('tru1e')  #@show_time
    def foo(*a,**b):
        sums=0
        for i in a:
            sums+=i
        print(sums)
        time.sleep(1)
    foo(1,2,3,4,5)
  • 相关阅读:
    TCP /IP协议的理解
    Linux 文件大小跟踪命令
    关于3D旋转的本质
    Unity旋转
    QT解析XML(机械拆装)
    红黑树总结
    EXCEPTIONS
    算数运算符注意事项
    java中常用的转义字符
    常量和数据类型
  • 原文地址:https://www.cnblogs.com/aresxin/p/9266077.html
Copyright © 2011-2022 走看看