def func(n):
rec = 1
for i in range(1, n + 1):
rec *= i
yield rec
f = func(4)
sumRec = 0
for i in f:
sumRec += i
print("1! + 2! + 3! + 4! = %s" % sumRec)
实行结果
1! + 2! + 3! + 4! = 33
注意点:方法里面的rec=1只会在第一次[for i in f:]遍历时执行,因为yield后暂停后面要执行的代码,所以当yield在循环里面进行返回的时候,暂停的是循环,所以当再次遍历的时候,会接着去做循环,还不会再把上面的定义再走一遍。