面试题答案
一键面试在生成器函数中 return 的特殊场景
在生成器函数中,return
用于提前终止生成器,并返回一个值(这个返回值会被 StopIteration
异常捕获)。常规情况下,生成器会在遇到函数末尾时自然结束,但 return
可在函数执行过程中任意位置主动结束生成器。
与 yield 的区别及配合使用示例
yield
用于暂停生成器函数的执行,并返回一个值,下次调用生成器的 __next__()
方法时,函数会从 yield
语句之后继续执行。而 return
是结束生成器并返回值。
示例代码如下:
def gen_example():
for i in range(3):
yield i
return 100
gen = gen_example()
try:
while True:
print(next(gen))
except StopIteration as e:
print(f"生成器结束,返回值为: {e.value}")
在上述代码中,gen_example
是一个生成器函数,通过 yield
依次返回 0
、1
、2
。当 yield
不再执行(即循环结束),生成器遇到 return
,此时生成器结束,并返回值 100
,该返回值被 StopIteration
异常捕获,在 except
块中被打印出来。