Python中的生成器问题

2024-09-26 17:46:39 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图理解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

你能解释一下为什么这个函数被反复调用吗?变量不应该有值吗?应该对生成器变量进行迭代吗?你知道吗


Tags: toin功能forvaluedefvalgenerated
2条回答

调用生成器函数时,将返回生成器对象。不是像普通函数那样的单一值。这是一个可用于延迟计算的对象。每个生成器对象都有一个名为__next__()的方法。这允许Python通过调用__next__()多次从生成器对象-而不是函数-yieldVar生成值。你知道吗

函数是而不是一次又一次地调用,您可以看到"into y fun ..."只打印了一次。你知道吗

所发生的事情是,通过调用包含yield的函数得到的生成器正在被for循环推进(即使用)。你知道吗

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

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

相关问题 更多 >

    热门问题