F.D*_*.F. 23 python conditional exception raise zen-of-python
遵循"武士原则",我试图在我的功能上做这个,但似乎是错的......
return <value> if <bool> else raise <exception>
Run Code Online (Sandbox Code Playgroud)
有没有其他"美丽"的方式来做到这一点?谢谢
Dan*_*man 20
内联/三元if
是一种表达,而不是一种陈述.你的尝试意味着"如果bool,返回值,否则返回结果raise expression
" - 这当然是胡说八道,因为raise exception
它本身就是一个陈述而不是一个表达.
内联无法做到这一点,你不应该这样做.明确地做:
if not bool:
raise MyException
return value
Run Code Online (Sandbox Code Playgroud)
glg*_*lgl 15
如果你绝对想要raise
表达,你可以做到
def raiser(ex): raise ex
return <value> if <bool> else raiser(<exception>)
Run Code Online (Sandbox Code Playgroud)
这种"尝试"返回的返回值raiser()
,这将是None
,如果没有无条件raise
的功能.