• 函数进阶(二)


    叠加装饰器

    叠加装饰器:在同一个被装饰对象中,添加多个装饰器,并执行(装饰器在被装饰对象被调用时,才会执行添加的功能)

    叠加装饰器:

    ​ 装饰顺序:由下而上,调用wrapper装饰器拿到返回值inner

    ​ 执行顺序:由上而下,调用装饰过后的返回值inner

    ps:无论inner中出现任何判断,最后都要返回‘调用后的被装饰对象’func(*args,**kwargs)

    有参装饰器

    有参也可叫做三层闭包,装饰器后面加上括号传入参数(可以用作用户权限区分)

    无参装饰器

    装饰在被装饰对象时,没有传入参数的装饰器

    wraps

    作用:修复的是被装饰对象的空间

    from functools import wraps
    def wrapper(func):
        @wraps(func)  # 修改名称空间: inner ---》 func
        def inner(*args, **kwargs):
            '''
            此处是装饰器的注释
            :param func:
            :return:
            '''
            res = func(*args, **kwargs)
            return res
        return inner  # ---》 func
    @wrapper
    def index():
        '''
        此处是index函数的注释
        :return:
        '''
        pass
    # print(index)  # 函数对象
    #
    # # 函数对象.__doc__: 查看函数内部的注释
    index()
    print(index.__doc__)  # inner.__doc__

    迭代器

    原理:内置--iter--都是可迭代对象,加上next取值就是迭代器,迭代器不依赖索引取值,每次只取一个值并且停顿,内存里面只存一个值,如果想要获取前面的值,只能从新执行iter;

    优点:不依赖索引取值,占用内存小

    缺点:一次只取一个值,要想调用前面的值,只能从新创建迭代对象或者从新调用iter,当两个循环同时使用一个迭代器时,只有一个能执行成功

    我把月亮戳到天上 天就是我的 我把脚踩入地里 地就是我的 我亲吻你 你就是我的
  • 相关阅读:
    webService 的使用
    前端框架——树形结构Ztree的使用
    vue使用问题总结(长期更新)
    yum安装配置MySQL数据库
    kworkerds挖矿木马
    zabbix 中文乱码
    GIT 仓库的搭建
    ELK 收集交换机日志(以华为交换机为例)
    Zabbix 邮箱告警(Python脚本)
    Tomcat8性能优化
  • 原文地址:https://www.cnblogs.com/zhulipeng-1998/p/12863917.html
Copyright © 2020-2023  润新知