• python 装饰器


    1***装饰器。

      装饰器基本模板:

    def warpar(args):
        def dinner(*args,**kwargs):
            #想添加的任何内容
            ret= args(*args,**kwargs)
            #想添加的任何内容
            return ret
        return dinner
    
    func = warpar(func)
    def func():
        print('你好~~')#装饰器在不改变原函数的执行的情况下为原函数增加额外的功能
    

       #装饰器在不改变原函数的执行的情况下为原函数增加额外的功能

    2.语法糖@

      利用模板套用之后再需要装饰的函数之上输入@装饰器名

    def warpar(args):
        def dinner(*args,**kwargs):
            #想添加的任何内容
            ret= args(*args,**kwargs)
            #想添加的任何内容
            return ret
        return dinner
    
    @warpar  #相当与func = warpar(func)
    def func():
        print('你好~~')
    

     3.函数有用的信息:

     为函数标注其功能和返回值:

    from functools import wraps
    def warpper(f):
        @wraps
        def inner():
            '''函数执行之前的操作'''
            ret = f()
            '''函数执行之后的操作'''
            return ret
        return inner
    
    def fun():
        '''
        这个函数的功能是***,参数分别是888,888,其返回值是
        :return:
        '''
    
    print(fun.__name__)
    print(fun.__doc__)
    #直接显示函数的注释
    

     4.多个装饰器装饰一个函数:
    从上之下再从下至上

    def func1(f):   #f = func
        def inner():
            print('3333')
            ret = f()  #f() = func()
            print('4444')
            return ret
        return inner
    
    
    def func2(f):  #f = inner
        def inner2():
            print('2222')
            ret = f()  #f = inner()
            print('5555')
            return ret
        return inner2
    
    
    def func3(f):  #f = inner2
        def inner3():
            print('1111')# 执行函数前的操作
            ret = f()  #f = inner2
            print('6666')
            return ret
        return inner3
    
    @func3
    @func2
    @func1                  
    def func():
        print('谁是傻逼')
    
    func()
    
  • 相关阅读:
    C结构体
    读书笔记之:C语言深度剖析
    stdin、stdout、stderr
    There is an error while getting planid. No Free partitions available
    LeetCode刷题笔录Add Binary
    UVA
    谷歌google搜索打不开、谷歌gmail邮箱及相关服务无法登录的解决的方法
    C/C++中各种类型int、long、double、char表示范围(最大最小值)
    使用java进行文件编码转换
    懂,你的App生,不懂,死!
  • 原文地址:https://www.cnblogs.com/wpcbk/p/8692385.html
Copyright © 2020-2023  润新知