• 装饰器


    这个比较复杂
    def before(func):                       #定义装饰器
        def wrapper(*args, **kwargs):
            print('Before function called.')
            return func(*args, **kwargs)
        return wrapper
    
    def after(func):                         #定义修装饰器
        def wrapper(*args, **kwargs):
            result = func(*args, **kwargs)
            print('After function called.')
            return result
        return wrapper
    
    @before
    @after
    def test(*args,**kwargs):                              #同时使用两个装饰器装饰函数
        print(args)
    test(123)  # 调用被装饰的函数
    print(test(123))

    多个装饰器装饰一个函数

    # 带参数的装饰器:(相当于开关)为了给装饰器传参
    F = True  # 为True时就加上装饰器
    # F = False  # 为False时就去掉装饰器
    
    
    def outer(flag):
        def wrapper(func):
            def inner(*args, **kwargs):
                if flag:
                    print('before')
                    ret = func(*args, **kwargs)
                    print('after')
                else:
                    ret = func(*args, **kwargs)
                return ret
            return inner
        return wrapper
    
    
    @outer(F)   # outer(F) = wrapper -> @wrapper -> f1 = wrapper(f1)
    def f1():
        print('in f1')
    
    @outer(False)   # outer(F) = wrapper -> @wrapper -> f2 = wrapper(f2)
    def f2():
        print('in f2')
    
    
    f1()
    f2()
    print(f1())
    
    
    

      

    import time def door(func): def wapper(): start_time=time.time() func() time.sleep(3) stop_time=time.time() print(abs(start_time-stop_time)) return wapper @door def test1(): print('in the test1:') test1()

    简单的装饰器 test1=door(test1)

    import time
    
    def foo(func):
        def wapper(*args,**kwargs):
            print(args,end='')
            func(*args)
            print(kwargs)
        return wapper
    @foo                #test=foo(test)
    def test(*args):
        print('in test 1:',args)
    test(123,456,s='袁珂')
    

      带参函数

  • 相关阅读:
    C++ 整型长度的获取 不同的系统
    第二章习题 C++
    输入cin对象的用法
    将Mnist手写数字库转化为图片形式 和标签形式
    寻找图片中数字的轮廓并裁剪 扣取数字
    Linux中的日志功能
    Linux中的系统默认日志
    Linux中进程在前后台的切换
    Linux中的服务管理
    Linux中的流程控制语句
  • 原文地址:https://www.cnblogs.com/yuanke98/p/9193425.html
Copyright © 2020-2023  润新知