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

    1,装饰器

    本质:本质就是一个闭包函数。------装饰器是函数的重点内容,所以必须要掌握。

    装饰器的功能:在不修改函数的情况下原函数增加功能。

    2,装饰器的基本模型

    def timer(func)
        def inner(*args,**kwargs)
            ‘’‘’‘’执行函数前要做的‘’‘’
                ret=func(*args,**kwargs)
            '''''''执行函数后要做的‘’‘’‘’‘’
                return ret
            return inner
    @timer 
    def func2()
        print('in func2')
           
    func2()
    

     3.有一个参数的装饰器

    def outer(flag):
        def timer(func):
            def inner(*args,**kwargs):
                if flag:
                    print('''执行函数之前要做的''')
                re = func(*args,**kwargs)
                if flag:
                    print('''执行函数之后要做的''')
                return re
            return inner
        return timer
    
    @outer(False)
    def func():
        print(111)
    
    func()
    View Code

    4,有多个参数的装饰器

    def wrapper1(func):
        def inner():
            print('wrapper1 ,before func')
            func()
            print('wrapper1 ,after func')
        return inner
    
    def wrapper2(func):
        def inner():
            print('wrapper2 ,before func')
            func()
            print('wrapper2 ,after func')
        return inner
    
    @wrapper2
    @wrapper1
    def f():
        print('in f')
    
    f()
    View Code

    这个代码执行后的效果是,先执行wrapper1的before,再执行wrapper2的before---》wrapper2的after---》再执行wrapper1里的after。

    顺序方面是有点绕。

  • 相关阅读:
    删除文件夹
    遍历文件夹
    二分查找
    轻松记住大端小端的含义(附对大端和小端的解释)
    Motorola和Intel格式报文解析的区别
    Intel格式与Motorola格式的区别
    ADC采样工作原理详解
    软件概要设计做什么
    共模干扰和差模干扰
    什么是GPIO?
  • 原文地址:https://www.cnblogs.com/52forjie/p/7252330.html
Copyright © 2011-2022 走看看