-
可迭代对象关系
-
如何判断
- Iterable 可迭代对象
- Iterator 迭代器对象
from collections.abc import Iterable, Iterator print(instance([], Iterable))
-
定义
Iterable
包含Iterator
;Iterable
协议规定必须实现__iter__
方法,并且返回Iterator
;Iterator
协议规定必须实现__iter__
方法和__next__
方法(python2实现next方法),__next__
方法返回迭代器的下一个项目
-
两个
自定义迭代器
代码块class Iterator: def __iter__(self): return self def __next__(self): return 1
class Iterator: def __iter__(self): yield self
-
for … in …
迭代器遍历,原理是首先调用 iter() 内部调用__iter__
返回Iterator
,然后调用 next() 内部调用__next__
,直到捕获到StopIteration
异常 -
__getitem__
当对象只有__getitem__
方法时也可以进行for .. in ..
遍历,next将进入__getitem__
从0开始以下标递增的方式进行迭代class Test: def __init__(self): self.a = [1, 2, 3] def __getitem__(self, item): print("item:", item) return self.a[item] t = Test() iter_t = iter(t) print(iter_t) next(iter_t) >> <iterator object at 0x00000000028399E8>
python 可迭代对象
于 2022-02-16 11:03:16 首次发布