[Python在yield前引发异常

问题描述 投票:0回答:1

我正在尝试创建一个产生值的函数。在做任何事情之前,我要确保函数输入有效。下面的代码在执行后创建生成器。仅在next之后引发异常。函数的优雅结构是否在next之前引发异常?

def foo(value):
    if validate(value):
        raise ValueError
    yield 1
python generator
1个回答
0
投票

在使用value之前,您无法检查next,这是从gnerators开始使用docs的全部要点:

每个产量暂时中止处理,记住位置执行状态(包括局部变量和未决尝试陈述)。生成器迭代器恢复后,它将启动它停止的地方(与在每个地方重新开始的功能相反调用)。

您可以做的是在使用生成器之前检查该值

© www.soinside.com 2019 - 2024. All rights reserved.