如果某些条件不满意,我经常想让我的Python代码死掉。我通常只使用assert whatever()
。但是,我有时会使__debug__
等于False
。在这些情况下,我仍然需要检查一些类似断言的条件。我认为处理这些案件的“正确”方式只是常规的:if not whatever(): raise Exception('Error message!')
。换句话说,我认为将断言用于你不乐意做的检查是正确的,大概是那些耗时或者会多次运行的检查。是否有更简洁的方法来完成与完整条件相同的事情?
在Perl中,我只使用whatever() or die
。当然,考虑到语言之间的哲学差异,看到Perl需要更少的字符并不奇怪。
答案 0 :(得分:0)
您可以做的一件事是创建自己的断言版本:
def confirm(expression):
if not expression:
raise AssertionError
然后,您可以改为assert whatever()
而不是confirm(whatever())
。
或者,如果要模拟perl,可以执行以下操作:
def die():
raise Exception()
whatever() or die()
如果whatever()
返回True
,die()
将永远不会执行(由于布尔短路),程序会快乐地消失。如果whatever()
返回False
,则程序将终止。
从技术上讲,这是另外两个字符,然后是perl,但您可以将die
重命名为d
,最后会写出相同数量的字符。
我很确定这不是Pythonic的做事方式,但如果您愿意,可以使用该选项。