生成器

生成器

生成器时一个自定义的迭代器

yield

只能在函数内部定义,每一次yield都会往生成器中添加值,yield可以保存函数的暂停状态

如何实现生成器:但凡在函数内部定义了yield,调用函数时不会执行函数体代码,会返回一个结果,该结果就是生成器

当通过__next__()取值时才会执行函数体代码

def func():
    print(A)
    yield a
    print(B)func
    yield b
    print(C)
    yield c
func() # 不会执行
res = func()
print(next(res))
print(next(res))
print(next(res))

自定义range功能,创建一个自定义生成器

def my_range(start,stop,step):
	while start < stop:
		yield start
        start += step
 
g_range = my_range(1,6,2)
print(next(g_range))

yield与return

相同点:返回值的个数都是无限制的

不同点:return只能返回一次值,yield能多次返回值

原文地址:https://www.cnblogs.com/littleb/p/11857490.html