python语言中,使用了yield的函数被称为生成器。
生成器返回的必是迭代器。
看了很长时间才弄懂这两句话,废话不多说,用一个简单的例子来解释一下yield。
1.下面是我写的一段简单的求解阶乘的函数:
def fac(n):
i,j = 1,1
while j<=n:
i=i*j
print(i)
j+=1
fac(6)
该函数输出结果如下图:
2.要提高fac函数的可复用性,最好不要直接打印出数列,而是返回一个列表,以下是该函数的第二个版本:
def fac(n):
i,j = 1,1
l=[]
while j<=n:
i=i*j
l.append(i)
j+=1
return l
print(fac(6))
该函数输出一个列表,结果如下图: