【发布时间】:2018-12-13 15:17:05
【问题描述】:
我正在尝试编写一个产生两个变量并根据条件引发异常的函数。 这是一个最小的例子:
def func():
var1 = 0
var2 = 1
yield var1, var2
if not var1 > var2:
raise Exception(var1,var2)
var1, var2 = (1,1)
var1,var2 = func()
此结构目前不产生 var1、var2 并引发异常。 我需要它在这个函数本身内产生和引发异常,以便其他模块可以直接使用这个函数而无需额外的代码。 如果 yield 语句不是一个好主意,那是什么?
尝试过 - [_ for _ in func()] 但 var1 和 var2 的值并没有像预期的那样从产量改变。
尝试过 - var1, var2 = next(func()) 这会产生但不会引发异常。
【问题讨论】:
-
你提出什么样的
Exception?你能创建一个最小的可重现示例吗? -
如果你在它之前让步,为什么要检查条件行?这个问题需要使用yield吗?
-
很抱歉,由于我的初始化和测试用例相同,我理解错误。请检查我将对该问题进行的编辑。
-
这很奇怪。我曾预计执行会在
yield之后暂停,这样raise就不会被执行,但情况似乎并非如此。
标签: python exception-handling generator