Python

Python中的assert关键字

2017-05-18  本文已影响87人  耀凯考前突击大师

基本上每一种编程语言中都有assert声明。

总的来说,assert condition的意义是令程序测试condition,并在condition测试结果为false的时候抛出异常

在Python中,assert有两种形式:

  1. assert expression

    assert expression等同于如下代码:

    if _debug_:
        if not expression:
            raise AssertionError
    
  2. assert expression1, expression2

    assert expression1, expression2等同于如下代码:

    if _debug_:
        if not expression1:
            raise AssertionError(expression2)
    

以上两段代码中的_debug_AssertionError都代表的是Python中内建的变量。当前Python中_debug_在普通情况下均为True。只有当程序执行在优化模式下为False(优化模式为命令行的-O选项)。所以当程序以优化模式编译后,assert声明并不会被执行。需要注意的是,我们并不需要手动在错误信息中加入assert后被检测的expression的代码,这些代码会自动显示在出错的堆栈信息中。

另外,给_debug_赋值是非法的。_debug_的值在程序的编译器开始工作时就已经确定了。

我们可以通过以下这个简单的python shell中的例子来理解assert

>>> assert True
# Nothing happens

>>> assert False
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
AssertionError

上一篇 下一篇

猜你喜欢

热点阅读