【发布时间】:2020-02-29 16:20:30
【问题描述】:
我编写了这段代码来尝试了解正在发生的事情。
谁能帮我理解为什么生成器不递归调用自己? 如何编写递归生成器?
def f_yield(n):
print(n)
if n < 5:
yield n
else:
yield f_yield(n-3)
def f_return(n):
print(n)
if n < 5:
return n
else:
return f_return(n-3)
[i for i in f_yield(12)]
# prints 12
f_return(12)
# prints 12 9 6 3
【问题讨论】:
-
生成器函数在您尝试迭代它们之前不会执行。
-
@khelwood 什么使函数成为生成器?我尝试编写一个混合了 return 和 yield 语句的函数,它的行为就像一个生成器。这是正确的吗?谢谢。
-
@jimififi 是的,如果函数包含
yield语句,它就是生成器函数。
标签: python python-3.x recursion generator yield