• 可迭代对象(iterable)、迭代器(iterator)、生成器(generator)


    【可迭代对象】

      只要一个对象的方法中,有__iter__方法,那么这个对象就是一个可迭代对象。如下图:

    img

    【迭代器】

    如果一个对象中,有__next__方法和__iter__方法,那么这个对象就是一个迭代器。创建迭代器可以通过iter()函数。如下图:

    img

    迭代器特性:

    迭代器对象为一次性消费,用完不可再生,如下图:

      如果要再使用,需要重新获取迭代器;

    img

    【生成器】

    如果一个函数至少包含一个yield声明(当然它也可以包含其他yield或return),那么它就是一个生成器。

    yield和return都会让函数返回一些东西,区别在于,return声明彻底结束一个函数,而yield声明是暂停函数,保存它的所有状态,并且后续被调用后会继续执行。

    任何使用了yield的函数就是生成器,生成器就是一个返回迭代器的函数,或者说生成器就是一个迭代器。如下图:

    img

    生成器函数:

    和其他函数编写方式相同,但是使用yield语句一次返回一个结果;

    生成器函数被调用的时候并不会立即执行,可以通过next()函数对生成器函数返回的对象进行迭代;

    生成器函数每当执行到yield语句时,生成器函数会暂停并保存当前函数内的所有变量和状态,等待下次调用时从当前状态继续执行。

    img

     生成器有两种表示:

    生成器表达式:

    生成器表达式是用圆括号来创建生成器,其语法与推导式相同,只是将 [] 换成了 () 。 生成器表达式会产生一个新的生成器对象。如图:

    img

    生成器函数:

    img

    待完善。。。。。。。。。。。。。。

  • 相关阅读:
    坑爹的微信支付v3,其实没有那么坑
    Mysql探究之null与not null
    Mysql的空值与NULL的区别
    Java编程思想(第4版) 中文清晰PDF完整版
    URI和URL的区别
    html 文本输入框效果大汇集
    HTTP状态码大全
    Silverlight ModelView中调用UI进程
    appium部分api
    appium元素定位
  • 原文地址:https://www.cnblogs.com/rubickcn/p/13521664.html
Copyright © 2020-2023  润新知