• 十一 —— 迭代器、生成器、装饰器


    迭代器(Iterable)

    迭代:

      通过for循环遍历对象的每一个元素的过程。

      python中,string/list/dict/tuple/set/bytes都是可以迭代的数据类型。通过collections模块中的Iterable类型来判断一个对象是否可迭代。

     迭代器:

      迭代器是一种可以被遍历的对象,并且能作用于next()函数。迭代器对象从集合的第一个元素开始访问,知道所有的元素被访问完结束。迭代器只能往后遍历,不能回溯,不像列表可随时取后面或前面的数据。迭代器通常要实现两个基本的方法:iter()和next()。

      string/list/dict/tuple/set/bytes,或自定义对象都可用于创建迭代器(使用内置iter创建迭代器,用next获取迭代器的下一个元素。当后面无元素时,弹出错误):

     

       python迭代器可以被next()函数调用并不断返回下一个元素,直到没有元素时抛出错误。迭代器不能提前知道提前知道序列长度,只能不断通过next()函数得到下一个元素,所以迭代器可以节省内存和空间。

    迭代器(Iterator)和可迭代(Iterable)的区别:::

      1、凡是可作用于for循环的对象都是可迭代类型

      2、凡是可作用于next()函数的对象都是迭代器

      3、list、dict、str等是可迭代的但不是迭代器,因为next()函数无法调用他们。可通过iter()函数将他们转换为迭代器

      4、python的for循环本质上及时通过不断调用next()函数实现的

    生成器(Generator)

      因为序列或集合内的元素个数巨大,肯定不能全部制造出来放入内存。python中,元素按照某种算法推算出来,在循环的过程中不断推算出后续的元素,不用再创建完整的元素集合,节省内存空间。python中,这种边循环边计算出元素的机制,叫生成器。

     

      python中,使用yield返回的函数会变成一个生成器。在调用生成器的过程中,每次遇到yield时,函数会停止并保存当前所有的运行信息,返回yield的值。并在下一次执行next()方法时,从当前位置继续运行。

    装饰器(Decorator)

      装饰器就是装饰对象的器件。可以在不改变原有代码的情况下,为被装饰的对象增加新的功能/附加限制条件或者帮助输出。

     参考 —— https://www.cnblogs.com/cicaday/p/python-decorator.html

  • 相关阅读:
    Linux 设备驱动 Edition 3(中文版)
    内核和用户空间共享内存的实现例程proc和mmap
    mmap的详细使用(用户空间)
    使用 I/O 内存from LDD3
    关于strcpy、memset、memcpy的使用详解
    get_free_page 和其友
    Linux调试技术介绍
    关于信息时代的学习
    [恢]hdu 1196
    [恢]hdu 1157
  • 原文地址:https://www.cnblogs.com/KeenaCherry/p/12000291.html
Copyright © 2020-2023  润新知