迭代器:
对于可迭代对象使用内置函数iter()获取迭代器对象。
迭代器对象通过next()方法来访问里面的元素
当容器中没有可访问的元素后,next()方法将会抛出一个StopIteration异常终止迭代器。
列表生成式 例:[x**2 for x in range(n)]
生成器表达式:通列表解析语法,把列表解析的[ ]换成(),返回迭代器
生成器函数:generator
在函数中如果出现了yield关键字,那么这个函数就是生成器函数
在生成器中,如果没有return,则默认执行到函数完毕时返回StopIteration
在python2中有next方法,生成器函数中return后面不能有值
在python3中没有next方法,生成器函数中return后面如果有值,那么这个值为StopIteration异常的说明,不是程序的返回值
生成器支持的方法
close() 手动关闭生成器函数,后面的调用会直接返回StopIteration异常。
send() 生成器函数最大的特点是可以接受外部传入的一个变量,并根据变量内容计算结果后返回首先要通过g.send(None)或者next启动生成器函数,并执行到第一个yield语句结束的位置。
throw() 用来向生成器函数送入一个异常,可以结束系统定义的异常,或自定义的异常。
想了解区别和联系可参考—>迭代器与生成器的区别和联系