我正在尝试创建一个产生值的函数。在做任何事情之前,我要确保函数输入有效。下面的代码在执行后创建生成器。仅在next之后引发异常。函数的优雅结构是否在next之前引发异常?
def foo(value): if validate(value): raise ValueError yield 1
在使用value之前,您无法检查next,这是从gnerators开始使用docs的全部要点:
value
next
每个产量暂时中止处理,记住位置执行状态(包括局部变量和未决尝试陈述)。生成器迭代器恢复后,它将启动它停止的地方(与在每个地方重新开始的功能相反调用)。
您可以做的是在使用生成器之前检查该值