难以理解这段代码的收益部分
Having trouble understanding the yield part of this code
这里是全新的品牌。编码新手,如果您不算 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 循环的定义。
但我没有得到 yield 行:
while True:
yield a
a, b=b, a+b
有人可以帮我解决这个问题吗?例如:
虽然“什么”是真的??哪里会变成 False?
假设 a 从 1 开始,a 给我的是什么,而 [=29= 是什么]a,b=b,a+b给我?
在此代码中 恰好 是 a 得到 redefined/reset 的值(抱歉,如果术语错误) 从 1 到 2,从 2 到 3,从 3 到 5,等等?
while True:
while
语句检查右边的值是否为真。如果是,则执行另一个循环,如果否,则跳出循环。此语句无限循环。
yield a
在生成器中,这有点像 return
语句,只是它让生成器函数继续执行。此语句使程序能够执行,以便生成器在执行之间为调用者提供值,而不必 运行 一直到结束(在本例中为无穷大)。
a, b=b, a+b
这只是一种为变量赋值的 Pythonic 方式。它被称为多重赋值,其工作方式如下:
variable1, variable2, ... varaibleN = value1, value2, ... valueN
如果 a
从 1
开始,下一次引用 a
是在 yield a
,它将产生 1
。
a
在 a, b = b, a + b
处分配了一个新值。
这里是全新的品牌。编码新手,如果您不算 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 循环的定义。
但我没有得到 yield 行:
while True:
yield a
a, b=b, a+b
有人可以帮我解决这个问题吗?例如:
虽然“什么”是真的??哪里会变成 False?
假设 a 从 1 开始,a 给我的是什么,而 [=29= 是什么]a,b=b,a+b给我?
在此代码中 恰好 是 a 得到 redefined/reset 的值(抱歉,如果术语错误) 从 1 到 2,从 2 到 3,从 3 到 5,等等?
while True:
while
语句检查右边的值是否为真。如果是,则执行另一个循环,如果否,则跳出循环。此语句无限循环。
yield a
在生成器中,这有点像 return
语句,只是它让生成器函数继续执行。此语句使程序能够执行,以便生成器在执行之间为调用者提供值,而不必 运行 一直到结束(在本例中为无穷大)。
a, b=b, a+b
这只是一种为变量赋值的 Pythonic 方式。它被称为多重赋值,其工作方式如下:
variable1, variable2, ... varaibleN = value1, value2, ... valueN
如果 a
从 1
开始,下一次引用 a
是在 yield a
,它将产生 1
。
a
在 a, b = b, a + b
处分配了一个新值。