迭代器、生成器、模块和包知识点总结

第一部分:迭代器

 例1.  for....in 运行机制

运行截图:

 

例题2. 可迭对象

    一个数据类型中包含__iter__魔术方法就被称为可迭对象

        __iter__:确定你是一个可迭代对象、生成迭代器

运行截图:

例3. 迭代器:iter(可迭代对象),取值=next(迭代器),同时具备有__iter__、__next__这两个魔术方法被称为一个迭代器

   生成迭代器的两种方法

       1.通过iter()函数生成

     2.通过__iter__魔术方法

li21=iter(li2)  # 必须是可迭代对象才可以生成
# print('================================================')
# li21=li2.__iter__() # 跟上述作用一样的
print(dir(li21)) # 有__iter__' __next__

运行截图:

 通过__next__方法取迭代器里面的值:当取完的时候会出现异常,可以写个对应异常

运行截图:

 例4. for 循环的实现原理

运行截图:

 第二部分:生成器:

  是一个函数,函数里面包含一个yield关键字

 例1.生成器

运行截图:

 例2.

运行截图:

 总结:

  生成器,是Python提供的一种非常简便的语法 能让我们来自己写出迭代器;

       注意:1. 生成器,是一种特殊的迭代器

     2. 生成器指的是一个函数,返回的结果是一个迭代器

 

第三部分:模块(待续)

练习:

在一个模块中定义一个生成器, 这个生成器可以生成斐波拉契数列, 再另一个模块中使用这个生成器,得到斐波拉契数列

斐波那契数列:数列中每一个数的值都等于前两个数相加的值 [1, 1, 2, 3, 5, 8, 13, 21, 34, 55.........]

方法1:通过函数的方式实现

运行截图:

 

 方法2:通过生成器实现

运行截图:

 

posted @   人生努力努力努力就好  阅读(36)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?
点击右上角即可分享
微信分享提示