迭代器\生成器
print(range(10))
print(xrange(10))
如何把一个函数变成生成器
注意只要函数里边出现了yield,则这个函数就不是普通的函数了,就是生成器函数。
def xrange():
yield 1
yield 2
yield 3
r=xrange()
print(r)
执行这个函数得到一个生成器。
生成器具有生成一些东西的能力
执行函数的时候得到生成器,执行一个生成器的next方法就会得到里面的内容
yield具有保存上一次执行位置的功能。
要注意这里是有几个yield就执行几次next
要注意执行生成器函数的时候,它的内部是不执行的,只有在遇到__next__()的时候它才会这样执行。
执行函数寻找下一个yield,根据生成器找它的yield
一个生成器的第一个next寻找它的第一个yield.
注意如果变成xrange().__next__()、又变成xrange().__next__():注意三次输出的是同一个值,都是第一个yield
要注意的是一旦遇到return整体就退出了。yield的作用就是可以保存上一次的执行状态
def xrange():
start=0
while True:
yield start
start+=1
这个里面相当于创建了无穷多个yield。

浙公网安备 33010602011771号