python yield学习心得

1.首先,当函数中包含yield的时候,它本身就已经不再是一个普通的函数,而是变成了一个生成器generator(和List类似,List:     

   [..,..,..],generator:(..,..,..),访问元素时用next()函数),只不过里面的元素还没有确定。

2.调用包含yield的函数之后,函数本身并不会执行,而是返回了一个迭代对象iterable,类似于range()只不过里面的元素还没有确定, 

   假设函数g()是一个包含的yield的生成器函数,for i in g():·········

3.yield和return有相同的功能,即返回一个值,区别是执行完return后函数就会结束,而执行yield之后只是会暂停,此时便产生了一个

   值,for i in g():·········中的 i 此刻就获取到了这个返回值,然后在进行下一次循环时,原函数会从暂停的地方接着执行,直至再遇到

   yield,然后暂停并返回下一个值。

4.其实上述功能也可以  通过直接运行完函数,然后返回一个list来实现,但用yield实现的好处是:调用普通函数返回List会占用比较大 

   的空间,而调用包含yield的生成器函数返回了一个  迭代对象  ,只占用比较小的空间(姑且可以理解成在调用时因为函数还没执

   行,所以生成器中还是空的,而在执行循环过程中每次只返回一个值,所以始终占用较小的空间)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值