在讲解map、reduce、filter函数之前,我们先来了解一下迭代器对象(iterable object)和生成器的相关概念
1. 迭代对象(iterable object)
迭代对象是这样一个对象,它包含有一个next()方法(__next__()方法,在python 3x中), 这个方法的目的是进行到下一个结果,而在结束一系列结果之后,抛出StopIteration错误。
当一个循环结构(比如for)调用循环对象时,它就会每次循环的时候调用next()方法,直到StopIteration出现,for循环接收到,就知道循环已经结束,停止调用next()。
假设我们有test.txt文件,里面包含以下内容:
123
abc
456
当我们调用:
>>>f.open('test.txt')
>>>f.next()
>>>f.next()
..
不断地输入f.next(),直到最后出现StopIteration
open()返回的实际上是一个循环对象,包含有next()方法。而该next()方法每次返回的就是新的一行的内容,到达文件结尾时举出StopIteration。这样,我们相当于手工进行了循环。