[已解决] python生成器一段代码执行过程疑问
本帖最后由 zhcj66 于 2023-7-20 15:29 编辑下面的这段代码,生成器是如何使用的?没有理解怎么运算的def fibon(n):
a = b = 1
for i in range(n):
yield a
a, b = b, a + b
# 引用函数
for x in fibon(10):
print(x , end = ' ') 拿yieldpython百度就行了,讲得比论坛清楚多了。 python之生成器
参考:https://blog.csdn.net/weixin_55772194/article/details/123153688 https://pythontutor.com/python-debugger.html#mode=edit仔细看看执行过程 感谢大家解答 这段代码是一个斐波那契数列的生成器函数。它通过yield关键字返回斐波那契数列的前n个数字。在函数内部,a和b都被初始化为1,然后通过循环生成斐波那契数列。在每次循环中,使用yield关键字返回当前的a值,并用b更新a和b的值。
在代码的最后,我们使用for循环来迭代生成器函数并打印出斐波那契数列的前10个数字。通过设置end参数为' ',我们将数字之间的输出分隔符设置为空格。
运行这段代码将输出斐波那契数列的前10个数字:1 1 2 3 5 8 13 21 34 55 Hetwen 发表于 2023-7-20 15:22
这段代码是一个斐波那契数列的生成器函数。它通过yield关键字返回斐波那契数列的前n个数字。在函数内部,a ...
讲解的很透彻谢谢 这段代码是一个用生成器实现的斐波那契数列生成器。斐波那契数列是一个经典的数学数列,从第3项开始,每一项都是前两项之和。通常,斐波那契数列的前几项为:1, 1, 2, 3, 5, 8, 13, 21, 34, 55, ...。
现在,我们来解释代码的功能和工作原理:
1. 定义`fibon(n)`函数:
- 这个函数接受一个参数 `n`,表示生成斐波那契数列的长度。
- 在函数内部,`a`和`b`都被初始化为1,这是斐波那契数列的前两项。
2. 使用 `yield` 语句:
- `yield` 是一个关键字,用于定义生成器函数。当函数执行到 `yield` 语句时,它会返回一个值,并且函数的状态会被暂停,下次调用时从暂停的地方继续执行。
- 在这个代码中,`yield a` 表示每次生成器函数被调用时,会产生当前斐波那契数列的值 `a`。
3. 使用 `for` 循环调用生成器函数:
- `for x in fibon(10):` 这行代码会调用 `fibon` 函数,并用生成的斐波那契数列中的每个元素来迭代 `for` 循环。
- `fibon(10)` 会生成一个长度为 10 的斐波那契数列。
4. 输出结果:
- `print(x , end = ' ')` 这行代码会将每个生成的斐波那契数列元素 `x` 打印在一行上,末尾不换行,使用空格分隔。
最终,当代码运行时,它将生成斐波那契数列的前10个元素,并打印在一行上,结果类似于:`1 1 2 3 5 8 13 21 34 55`。 Vvvvvoid 发表于 2023-7-20 15:52
这段代码是一个用生成器实现的斐波那契数列生成器。斐波那契数列是一个经典的数学数列,从第3项开始,每一 ...
a, b = b, a + b
这一行的目的是什么,不理解这里 zhcj66 发表于 2023-7-21 08:29
a, b = b, a + b
这一行的目的是什么,不理解这里
a = b
b=a+b
页:
[1]
2