是否可以让一个函数同时输出一个生成器表达式和一个值

Is it possible to have a function output a generator expression and a value at the same time

我想让一个函数输出一个生成器表达式和一个值(字符串、整数、列表、元组等),我尝试了一个,它看起来像这样:

def func():
    for x in range(3):
        yield x
    return "Hello World"

print(func())

我运行调试,它似乎运行 return但是当我打印结果时没有输出任何东西

<generator object func at 0x7fb35a69ac80>

为什么会这样,我该如何解决这个问题运行使用 return 语句而不是 return 任何东西。

生成器中的 return 值表示为 StopIteration 异常中数据的一部分。当您在已耗尽所有剩余值的生成器上调用 next 时会发生此异常。

这里有一个简单的例子来说明如何使用它。

def func():
    for x in range(3):
        yield x
    return "Hello World"

gen = func()

try:
    while True:
        print(next(gen))
except StopIteration as e:
    print(e.value)
0
1
2
Hello World