Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/344.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python中简洁的错误检查_Python_Assert - Fatal编程技术网

Python中简洁的错误检查

Python中简洁的错误检查,python,assert,Python,Assert,如果某些条件不满足,我通常希望Python代码死亡。我通常只使用断言whatever()。但是,我有时在运行时使用\uuuu debug\uuu等于False。在这些情况下,仍有一些类似断言的条件需要检查。我相信处理这些情况的“正确”方法只是一种常规的if:if notwhere():引发异常('Error message!')。换言之,我认为使用assert进行检查是唯一正确的,您很乐意不用这些检查,可能是那些耗时的检查或将要运行多次的检查。有没有更简洁的方法来完成与完整条件语句相同的事情 在

如果某些条件不满足,我通常希望Python代码死亡。我通常只使用
断言whatever()
。但是,我有时在运行时使用
\uuuu debug\uuu
等于
False
。在这些情况下,仍有一些类似断言的条件需要检查。我相信处理这些情况的“正确”方法只是一种常规的if:
if notwhere():引发异常('Error message!')
。换言之,我认为使用assert进行检查是唯一正确的,您很乐意不用这些检查,可能是那些耗时的检查或将要运行多次的检查。有没有更简洁的方法来完成与完整条件语句相同的事情


在Perl中,我只使用
which()或die
。当然,考虑到两种语言在哲学上的差异,Perl需要更少的字符也就不足为奇了。

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

def confirm(expression):
    if not expression:
        raise AssertionError
然后,您可以使用
确认(whatever())
,而不是使用
断言whatever()

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

def die():
    raise Exception()

whatever() or die()
如果
which()
返回
True
die()
将永远不会执行(由于布尔短路),程序将愉快地运行。如果
where()
返回
False
,则程序将终止

从技术上讲,这比perl多了两个字符,但是您可以将
die
重命名为
d
,并最终写入相同数量的字符


我很确定这不是一种类似python的方法,但是如果您愿意的话,这个选项是可用的。

def die(为什么)有什么问题:引发异常(为什么)?然后将其用作
which()或die('which is breaked')
这样,即使您有_; debug _;=False,您仍然希望代码死亡?如果是这样的话,如果条件满足(或不满足,取决于您想要什么),您可以执行sys.exit()。