Python 理解此代码的屈服部分有困难

Python 理解此代码的屈服部分有困难,python,yield,Python,Yield,这里是全新的。如果你不算25年前在学校学习过编码但从未使用过IRL,那么你就是编码新手 这是《Python简易步骤》一书中的一个示例: def fibonacci_generator(): a=b=1 while True: yield a a, b=b, a+b fib = fibonacci_generator() for i in fib: if i>100: break else:

这里是全新的。如果你不算25年前在学校学习过编码但从未使用过IRL,那么你就是编码新手

这是《Python简易步骤》一书中的一个示例:

def fibonacci_generator():
    a=b=1

    while True:
        yield a
        a, b=b, a+b

fib = fibonacci_generator()

for i in fib:
    if i>100:
        break
    else:
        print('Generated', i)
我可以或多或少地遵循生成器的定义(我知道它不是一个函数;它有意义,对吗?)和fib变量和for循环的定义

但我没有得到收益率方面的信息:

while True:
        yield a
        a, b=b, a+b
有人能带我走过这段路吗?例如:

  • “什么”是真的??这在哪里会变成假的

  • 假设a从1开始,那么产生a给我的是什么,而a,b=b,a+b给我的是什么

  • 这段代码的确切位置是a从1到2、从2到3、从3到5等重新定义/重置值(如果术语错误,请抱歉)

为真时:
while
语句检查右侧值是否为真。如果是,则执行另一个循环,如果不是,则中断循环。此语句无限循环

产生一个
在生成器中,这有点像
return
语句,只是它允许生成器函数继续执行。此语句使程序能够执行,以便生成器在执行期间向调用方提供值,而不必一直运行到结束(在本例中为无穷大)

a,b=b,a+b
这只是一种为变量赋值的python方法。这称为多重分配,其工作原理如下:

variable1,variable2。。。varaibleN=value1,value2。。。瓦伦

如果
a
1
开始,下一次引用
a
是在
中生成a
,它将生成
1



a
a,b=b,a+b
处分配一个新值,而“what”为True???
条件为True<代码>真实是真实的。它永远不会结束<代码>在此代码中的确切位置是在
a,b=b,a+b中重新定义/重置值,而“what”为True-
True
为True。这显然一直都是。因此,这是一个无止境的循环。
而True
意味着无限循环(因为
True
将始终是
True
a,b=b,a+b
重新定义了等号的左侧,即
a
b
。感谢您,而True是True。我想我现在明白了@好吧,我不明白你的回答,但我想我现在明白了。我以前认为这是三个不同的东西,但现在我看到它更像(a,b)=(b,a+b)。是吗?请注意,双重赋值不同于两个单独的赋值,因为值相互影响…!你说得对,干得好!谢谢我一直在读a,b=b,a+b,就像是三个不同的我不知道是什么(我第一次看到收益率报表),而不是(a,b)=(b,a+b)。当我将书中的空格复制到脚本中时,我可能应该更加注意空格。现在变得更有意义了。