当前位置:主页 > python教程 > python迭代器和for循环区别

python迭代器和for循环的区别点整理

发布:2019-10-31 10:50:00 94


给寻找编程代码教程的朋友们精选了相关的编程文章,网友郭飞羽根据主题投稿了本篇教程内容,涉及到python、迭代器、for循环、python迭代器和for循环区别相关内容,已被146网友关注,下面的电子资料对本篇知识点有更加详尽的解释。

python迭代器和for循环区别

迭代器(iterator):迭代器对象必须同时实现__iter__和__next__方法才是迭代器。对于迭代器来说,__iter__ 返回的是它自身 self,__next__ 则是返回迭代器中的下一个值,最后没有元素时,抛出异常(异常可以被开发者看到)。

python迭代器和for循环区别

1.迭代器一定是可迭代对象,因为它实现了__iter__()方法;(推荐学习:Python视频教程)

2.通过iter()方法(在类的内部就是__iter__)能够使一个可迭代对象返回一个迭代器。

3.迭代器的 __iter__ 方法返回的是自身,并不产生新的迭代器对象。

第3点性质正是可迭代对象可以重复遍历的原因(每次返回一个独立的迭代器,就可以保证不同的迭代过程不会互相影响);而迭代器由于返回自身,因此只能遍历一次。

for循环的工作机制

当对象本身就是迭代器时,For循环工作机制:

调用 __iter__方法,返回自身self,也就是返回迭代器。不断地调用迭代器的next()方法,每次按序返回迭代器中的一个值。迭代到最后没有元素时,就抛出异常 StopIteration

在可迭代对象中,for循环工作机制:

先判断对象是否为可迭代对象(等价于判断有没有__iter__或__getitem__方法),没有的话直接报错,抛出TypeError异常。有的话,调用 __iter__方法,返回一个迭代器。在python内部不断地调用迭代器的__next__方法,每次按序返回迭代器中的一个值。迭代到最后没有元素时,就抛出异常 StopIteration,这个异常 python 自己会处理,不会暴露给开发者。

此外,还要注意,python中的for循环其实兼容了两种机制:

如果对象有__iter__会返回一个迭代器。如果对象没有__iter__,但是实现了__getitem__,会改用下标迭代的方式。__getitem__可以帮助一个对象进行取数和切片操作。

当for发现没有__iter__但是有__getitem__的时候,会从0开始依次读取相应的下标,直到发生IndexError为止,这是一种旧的迭代协议。iter方法也会处理这种情况,在不存在__iter__的时候,返回一个下标迭代的iterator对象来代替。一个重要的例子是str,字符串就是没有__iter__方法的,但是却依然可以迭代,原因就是其在for循环时调用了__getitem__方法。

更多Python相关技术文章,请访问Python教程栏目进行学习!

以上就是python迭代器和for循环区别的详细内容,更多请关注码农之家其它相关文章!


参考资料

相关文章

  • python实现向微信用户发送每日一句

    发布:2020-02-11

    这篇文章主要为大家详细介绍了python实现微信每日一句自动发送给喜欢的人,具有一定的参考价值,感兴趣的小伙伴们可以参考一下


  • Python运算符的作用与意义

    发布:2020-03-24

    本章节主要说明Python的运算符。举个简单的例子 4 +5 = 9 。 例子中,4 和 5 被称为操作数,+ 称为运算符。


  • Python defaultdict教程示例详解

    发布:2023-03-04

    这篇文章主要为大家介绍了Python defaultdict教程示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪


  • Python利用sqlacodegen自动生成ORM实体类示例

    发布:2022-10-21

    给大家整理了关于Python的教程,这篇文章主要介绍了Python利用sqlacodegen自动生成ORM实体类,结合实例形式分析了Python sqlacodegen安装技巧ORM实体类相关实现技巧,需要的朋友可以参考下


  • python整数反转输出的实例讲解

    发布:2021-08-25

    给定一个32位的符号整数,返回它的反转整数,正常整数方法实现,利用余数*10累加的方法完成。需要注意的是,python对整数除法采用“向下取整”机制,所以正数和负数要区别运算。整数转字


  • python实现桌面托盘气泡提示

    发布:2022-09-07

    给网友朋友们带来一篇关于python的教程,这篇文章主要为大家详细介绍了python实现桌面托盘气泡提示,具有一定的参考价值,感兴趣的小伙伴们可以参考一下


  • Python实现微信小程序自动操作工具

    发布:2023-04-26

    这篇文章主要为大家详细介绍了如何利用Python实现微信小程序自动化操作的小工具,文中的示例代码讲解详细,感兴趣的小伙伴可以了解一下


  • 27行Python代码批量将ppt转换为pdf

    发布:2020-03-22

    这篇文章主要为大家详细介绍了批量将ppt转换为pdf的Python代码,只要27行,具有一定的参考价值,感兴趣的小伙伴们可以参考一下


网友讨论