对生成器的理解

迭代器:
对于可迭代对象使用内置函数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() 用来向生成器函数送入一个异常,可以结束系统定义的异常,或自定义的异常。

想了解区别和联系可参考—>迭代器与生成器的区别和联系

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值