python yield语句

前言:
理解yield首先要理解generator, 要理解generator又先要理解可迭代对象iterables.
1. 可迭代对象:
创建一个list的时候,可以逐个去读取其中的元素,这就是一个可迭代对象。
generator也是一个可迭代对象,但是只能读取一次。它并不把所欲的值都存在内存里面,而是实时的产生。
yield返回一个generator。
当函数需要返回许多数据,并且这些数据只会用一次,就可以用yield.
调用使用了yield的函数时,函数里的代码并没有被执行,只是返回了generator对象。在用for使用generator的时候函数体里的代码才会被运行。
yield作用就是每次发生next()调用,函数执行完yield语句之后再挂起,这时返回yield的值,并不是yield啥就是啥,整个函数被保存,等待下一次next()调用。下次next()发生时,从yield后的语句开始执行,直到再次遇到yield为止,然后重复上述动作。
yield可解读为“返回然后等待”,直到所有yield语句完成,这时如果再次调用next(),则发生StopIteration异常,当然,在for循环之类的语句中会被自动处理。

################################
iterables:
可迭代对象简单说是有next()方法的对象,当迭代器使用新的iter()内置函数时,大多数迭代器上下文希望得到一个可以生成迭代器的对象。
生成器是用来定义迭代器的。
python中的迭代器是以C语言的速度运行的,而while循环则是通过Python虚拟机运行Python字节码。
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值