Python迭代器如何工作_for循环底层原理【教程】

admin 百科 18
Python的for循环实际调用迭代器协议,即先调用__iter__获取迭代器,再反复调用__next__直至StopIteration;可迭代对象需实现__iter__,迭代器需实现__next__。

Python迭代器如何工作_for循环底层原理【教程】-第1张图片-佛山资讯网

Python 的 for 循环背后,实际调用的是迭代器协议(Iterator Protocol),而不是直接遍历对象本身。理解这一点,就能明白为什么列表、字符串、文件甚至你自己写的类都能被 for 遍历——只要它们“支持迭代”。

迭代器协议:__iter__ 和 __next__

一个对象要成为可迭代对象(iterable),必须实现 __iter__ 方法,该方法返回一个迭代器(iterator)。而迭代器本身是一个实现了 __next__ 方法的对象,每次调用它就返回下一个值;当没有更多元素时,抛出 StopIteration 异常。

例如:

my_list = [1, 2, 3]
it = iter(my_list)  # 调用 my_list.__iter__()
print(next(it))     # 1 → 调用 it.__next__()
print(next(it))     # 2
print(next(it))     # 3
print(next(it))     # StopIteration 异常

登录后复制

for 循环其实是 while + 迭代器的语法糖

下面这两段代码完全等价:

立即学习“Python免费学习笔记(深入)”;

标签: python 可迭代对象 为什么

发布评论 0条评论)

还木有评论哦,快来抢沙发吧~