我知道产量产生在飞行中的值,通过我的理解,这意味着它不守值的内存,因此电流值不应该能够与最后的值进行交互。
但我只是想确保这样的话,可能会有人确认是否有可能或没有?
我将使用5作为数的值。
例如但发生器:
def factorial(number):
result = number
if number <= 1:
return 1
else:
for x in reversed(range(1, number)): # (4,1) reversed
result *= x # 5*4*3*2*1
return result # returns 120
是否有可能通过使用产量函数做同样的事情?怎么样?
谢谢
发电机可以是有状态:
def fibs():
a, b = 1, 1
while True:
yield b
a, b = b, a + b
g = fibs()
for i in range(10):
print next(g)
这里的状态是局部变量。而由发电机产生的迭代器是活的,他们保持活力。
编辑。我瞎了,这是一个阶乘
def factorials():
i = 1
a = 1
while True:
yield a
i+=1
a*=i
或者如果你需要一个功能不是他们流那么这里一个衬垫
print reduce(lambda a, b: a*b, (range(1, 10+1)))