2014-01-07 58 views
2

如果某些条件不满足,我经常希望我的Python代码死掉。我通常只使用assert whatever()。不过,我有时会跑__debug__等于False。在这些情况下,我仍然需要检查一些类似于断言的情况。我相信处理这些案件的“正确”方式只是一个例子:if not whatever(): raise Exception('Error message!')。换句话说,我认为使用assert进行检查是正确的,您可能很乐意去做这些检查,大概是那些耗时或者会运行很多次的检查。是否有一种比较完善的条件来完成同样的事情?Python中的Terse错误检查

在Perl中,我只会使用whatever() or die。当然,鉴于语言之间的哲学差异,看到Perl需要更少的字符并不令人惊讶。

+1

'def die(why):raise Exception(why)'有什么问题?然后将它用作'whatever()或者die('whatever is broken')' – mgilson

+0

所以,即使你有__ debug __ = False,你仍然希望你的代码死掉。如果是这样,如果条件满足(或没有满足,取决于你想要的),你可以做sys.exit()。 – astromax

回答

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,那么程序将终止。

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

我敢肯定,这不是Pythonic的做事方式,但可以选择,如果你喜欢这种方式。