snowday 发表于 2020-12-11 09:56:38

迭代器和可迭代对象有什么区别和联系呢?

如题

kogawananari 发表于 2020-12-11 10:31:34

迭代器

迭代器(`iterator`)必须提供`.__next__()`方法   
`.__next__()`执行要么返回下一个迭代器   
要么抛出`StopIteration`异常以标识迭代完成



可迭代对象

实现了迭代器协议的对象,是`Iterable`
`list`、`dict`、`str`等都是可迭代对象   
提供了`.__iter__()`方法,每次执行都会创建一个**初始的**迭代器。   
python的内部工具(`for`语句,`sum()`函数,`list()`函数等)使用迭代器协议访问对象   
同一个可迭代对象生成的可迭器**互不影响**,但是具有**惰性**
页: [1]
查看完整版本: 迭代器和可迭代对象有什么区别和联系呢?