是否可以让一个函数同时输出一个生成器表达式和一个值
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
我想让一个函数输出一个生成器表达式和一个值(字符串、整数、列表、元组等),我尝试了一个,它看起来像这样:
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