MST

星途 面试题库

面试题:Python 生成器函数中 return 的特殊用法

在Python生成器函数中,return 关键字除了常规用法外,还有特殊的作用。请描述在生成器函数中使用return的特殊场景,并举出一个示例代码说明它与 yield 的区别及配合使用的方式。
14.2万 热度难度
编程语言Python

知识考点

AI 面试

面试题答案

一键面试

在生成器函数中 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 依次返回 012。当 yield 不再执行(即循环结束),生成器遇到 return,此时生成器结束,并返回值 100,该返回值被 StopIteration 异常捕获,在 except 块中被打印出来。