迭代的使用:
1、 迭代比直接使用列表遍历效率根据高。比如字典的keys函数返回的列表,以及iterkeys返回的迭代器。
2、 reversed() 内建函数将返回一个反序访问的迭代器.参数必须为序列。
3、 enumerate:返回一个迭代器:有索引值。
4、 for eachLine in myFile 替换 for eachLine in myFile.readlines() :
5、 注意:在迭代的过程中不可以更改序列,否则会引发问题,导致迭代出错。
6、 可以自己定义一个类,可以迭代使用。不过需要定义方法:__iter__,next。
7、
生成器的使用:
1、 yield关键字可以阻塞住函数的执行,并且保存当前的执行环境,整个包被称为生成器。
2、 生成器可以通过调用生成器函数来创建。生成器函数是指包含关键字yield的函数。
3、 生成器可以通过.next()来执行。每调用一次,就执行代码,直到遇到yield关键字停止,并且返回yield关键字后面的表达式的值。
4、 可以通过调用send()函数来发送消息到生成器中。a = yield l:表示将send的入参赋值给a。
5、 throw:允许客户端传入要抛出的任何异常。
6、 和throw相同,只不过是要抛出一个特定的异常:GeneratorExit。