可能重复:
解释了Python yield关键字
有人可以向我解释一下yield语句在这段代码中实际做了什么:
def fibonacci():
a, b = 0, 1
while True:
yield a
a, b = b, a+b
Run Code Online (Sandbox Code Playgroud)
for number fibonacci():#使用生成器作为迭代器; 打印号码
到目前为止我所理解的是,我们正在定义一个finonacci()没有参数的函数?在我们定义的函数内部a,b等于0和1,接下来,虽然这是真的,但我们正在屈服a.这到底是做什么的?而且,在屈服的同时a?a现在等于b,而b现在等于a + b.
下一个问题,对于数字fibonacci(),是否意味着函数中的每个数字或什么?我同样难以理解产量和"数量"实际上在做什么.显然我知道它对于fibonacci()打印号码中的每个数字都意味着.我是否真的在不知情的情况下定义数字?
谢谢,对不起,如果我不清楚的话.顺便说一句,这是项目欧拉,如果我知道如何编程这将是一件轻而易举的事情,但我正在努力学习这一点.
mon*_*kut 11
使用yield使函数成为生成器.生成器将继续a在每个循环上产生变量,等待直到next()调用生成器的方法继续下一个循环迭代.
或者,直到你return或被StopIteration抚养.
略微修改以显示使用StopIteration:
>>> def fib():
... a = 0
... b = 1
... while True:
... yield a
... a = b
... b += a
... if a > 100:
... raise StopIteration
...
>>>
>>> for value in fib():
... print value
...
0
1
2
4
8
16
32
64
>>>
>>> # assign the resulting object to 'generator'
>>> generator = fib()
>>> generator.next()
0
>>> generator.next()
1
>>> for value in generator:
... print value
...
2
4
8
16
32
64
>>>
Run Code Online (Sandbox Code Playgroud)