python中for原理
-
for循环是对容器进行迭代的过程,不是所有的对象都可迭代。可迭代对象需要实现
__iter__
方法,并返回一个迭代器,迭代器(iterator
),迭代器只需实现__next__
方法>>> x = [1,2,3] >>> its = x.__iter__() # x有此方法,说明列表是可迭代对象 >>> its <list_iterator object at 0x100f32198> >>> its.__next__() # its有此方法,说明its是迭代器 1 >>> its.__next__() 2 >>> its.__next__() 3 >>> its.__next__() Traceback (most recent call last): File "<stdin>", line 1, in <module> StopIteration
for循环步骤
- 先判断对象是否为可迭代对象,不是的话直接报错,抛出
TypeError
异常,是的话调用__iter__
方法,返回一个迭代器 - 不断地调用迭代器的
__next__
方法,每次按序返回迭代器中的一个值 - 迭代到最后,没有更多元素了,就会抛出
StopIteration
,这个异常python
自己会处理,不会暴露给开发者
- 先判断对象是否为可迭代对象,不是的话直接报错,抛出