如果一个函数定义中包含yield
关键字,那么这个函数就不再是一个普通函数,而是一个生成函数;一般的函数是顺序执行,遇到return
语句或者最后一行函数语句就返回。而变成生成函数之后,在每次调用next()
的时候执行,遇到yield
语句返回,再次执行时从上次返回的yield
语句处继续执行。
下面程序是求杨辉三角的例子:
def triangles():
L =[1]
while True:
yield L[:]
L.append(0)
L=[L[i]+L[i-1] for i in range(len(L))]
for a in triangles():
print(a)
if len(a) >20:
Break
运行结果:
参考:https://www.liaoxuefeng.com/wiki/1016959663602400/1017318207388128