Closed. This question is opinion-based。它当前不接受答案。
想改善这个问题吗?更新问题,以便editing this post用事实和引用来回答。
在4个月前关闭。
我有很多断言语句,可用于验证输入数据和程序状态。即:
我想使用相同的语法,但使用特定的异常,即:
有没有一种单行语法可以实现相同的目的?
我试过了 :
但这不是PEP8有效的。
要么
但这有点丑陋。
更新:
谢谢@Thomas。我修复了问题描述中的示例。
我认为最接近我想要实现的目标是这一点(基于@puchal的回答)。
我没有考虑过以这种方式使用
注意,您的问题描述中有一个错误-您必须在第二个代码示例中取消该条件。您可以通过使用如上所示的
想改善这个问题吗?更新问题,以便editing this post用事实和引用来回答。
在4个月前关闭。
我有很多断言语句,可用于验证输入数据和程序状态。即:
assert all((i.children is not None for i in items)), "Someone has no children."
我想使用相同的语法,但使用特定的异常,即:
if any((i.children is None for i in items)):
raise NoChildrenException("Someone has no children.")
有没有一种单行语法可以实现相同的目的?
我试过了 :
if any((i.children is None for i in items)): raise NoChildrenException("Someone has no children.")
但这不是PEP8有效的。
要么
def raise_if(condition, clazz, *args):
if condition:
raise(clazz(*args))
raise_if(any((i.children is None for i in items)), NoChildrenException, "Someone has no children.")
但这有点丑陋。
更新:
谢谢@Thomas。我修复了问题描述中的示例。
我认为最接近我想要实现的目标是这一点(基于@puchal的回答)。
def raise_exc(exc):
raise exc
all((i.children is not None for i in items) or raise_exc(NoChildrenException("Someone has no children."))
我没有考虑过以这种方式使用
or
。 最佳答案
当前,没有办法做到这一点,这也是有效的PEP8。
没有比这更多的pythonic了:
if any(i.children is None for i in items):
raise NoChildrenException("Someone has no children.")
注意,您的问题描述中有一个错误-您必须在第二个代码示例中取消该条件。您可以通过使用如上所示的
not
摆脱两个any()
。关于python - 如果条件在单行中为真,则引发异常? ,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/57576447/
10-12 21:43