电流发生器值与之前产生的价值互动?

问题描述 投票:0回答:1

我知道产量产生在飞行中的值,通过我的理解,这意味着它不守值的内存,因此电流值不应该能够与最后的值进行交互。

但我只是想确保这样的话,可能会有人确认是否有可能或没有?

我将使用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

是否有可能通过使用产量函数做同样的事情?怎么样?

谢谢

python generator yield
1个回答
2
投票

发电机可以是有状态:

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)))
© www.soinside.com 2019 - 2024. All rights reserved.