我们在 Python 中使用 for 循环迭代时到底做了什么
转载请注明出处:https://blog.csdn.net/jpch89/article/details/85532979
-
使用
for
循环迭代一般写成:for i in x: ...
-
首先看
x
是否实现了__iter__
方法,这个方法的返回值是一个迭代器。- 如果
x
实现了x.__iter__()
方法,那么使用iter(x)
得到x
的迭代器it_x
。 - 然后对迭代器
it_x
不断地调用next(it_x)
,把每次返回的元素给i
。 - 最终迭代器元素耗尽,捕获到
StopIteration
异常,终止迭代。
- 如果
-
如果
x
没有实现__iter__
方法,那么看它是否实现了__getitem__
方法。
(序列类型Sequence
都实现了__len__
和__getitem__
方法,所以序列类型的对象都是可以用于for
循环的。)- 如果实现了
__getitem__
方法,那么开始把x[0]
、x[1]
、
- 如果实现了