在Python中进行错误检查

时间:2014-01-07 04:57:35

标签: python assert

如果某些条件不满意,我经常想让我的Python代码死掉。我通常只使用assert whatever()。但是,我有时会使__debug__等于False。在这些情况下,我仍然需要检查一些类似断言的条件。我认为处理这些案件的“正确”方式只是常规的:if not whatever(): raise Exception('Error message!')。换句话说,我认为将断言用于你不乐意做的检查是正确的,大概是那些耗时或者会多次运行的检查。是否有更简洁的方法来完成与完整条件相同的事情?

在Perl中,我只使用whatever() or die。当然,考虑到语言之间的哲学差异,看到Perl需要更少的字符并不奇怪。

1 个答案:

答案 0 :(得分:0)

您可以做的一件事是创建自己的断言版本:

def confirm(expression):
    if not expression:
        raise AssertionError

然后,您可以改为assert whatever()而不是confirm(whatever())

或者,如果要模拟perl,可以执行以下操作:

def die():
    raise Exception()

whatever() or die()

如果whatever()返回Truedie()将永远不会执行(由于布尔短路),程序会快乐地消失。如果whatever()返回False,则程序将终止。

从技术上讲,这是另外两个字符,然后是perl,但您可以将die重命名为d,最后会写出相同数量的字符。

我很确定这不是Pythonic的做事方式,但如果您愿意,可以使用该选项。