gpt4 book ai didi

python - Python 中的生成器问题

转载 作者:太空宇宙 更新时间:2023-11-03 14:04:31 25 4
gpt4 key购买 nike

我试图理解 Python 中的生成器并实现了这个:

def yfun():
print("into y fun ... ")
for x in range(1,6):
print("tryin to yield : {}".format(x))
yield x

yieldVar = yfun()

for val in yieldVar:
print("value generated -> ", val)

输出如下:

into y fun ...
tryin to yield : 1
value generated -> 1
tryin to yield : 2
value generated -> 2
tryin to yield : 3
value generated -> 3
tryin to yield : 4
value generated -> 4
tryin to yield : 5
value generated -> 5

你能解释一下为什么这个函数被一次又一次地调用吗?变量不应该具有值并且迭代应该在生成器变量上完成吗?

最佳答案

这个函数没有被一次又一次地调用你可以看到 "into y fun ..." 只被打印一次

发生的事情是通过调用包含 yield 的函数获得的生成器,它正在被 for 循环推进(即消耗)。

yieldVar = yfun()  # call yfun and get a generator

当生成器继续生成值时,循环运行并打印您生成的元素。

关于python - Python 中的生成器问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45102902/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com