首先看一下这个文档:文档链接
从文档中有几个重要的信息:
- 可迭代对象(Iterable):可以直接作用于for循环的对象,实现了iter()方法。
- 迭代器(Iterator):可以被next()函数调用并不断返回下一个值的对象。
- 生成器都是Iterator对象,但集合数据类型虽然是Iterable,却不是Iterator
- 可以使用iter()把Iterable变成Iterator
iter()函数
iter()的定义:
|
|
- iter(iterable)
函数参数必须是可迭代对象,支持迭代器协议(iteration protocol)或者是序列协议(sequence protocol)。也就是实现了iter()方法或者getitem()方法,如下所示:
|
|
- iter(callable, sentinel)
当有两个参数的时候,则第一个参数必须是可调用的对象(实例)即定义了call方法,这时候iter会生成一个迭代器(Iterator),每次调用这个迭代器的next()方法(在python2中是next()方法),都会调用callable,如果next()方法返回等于sentinel,则抛出StopIteration报错,否则返回下一个值。如下代码:
|
|