Python中的assert关键字

assert关键字用于在Python中进行条件测试,当测试条件为False时抛出AssertionError异常。它有两种形式:assert condition 和 assert condition, message。在优化模式下,assert不会执行。赋值给assert是非法的。在使用时要注意,assert不同于内建方法assert(),后者可以正常工作,但直接使用assert作为变量会导致错误,因为非空元组被视为True。" 132577851,18206272,Vue 路由规则模块化封装实践,"['Vue.js', '前端开发', '路由管理', '模块化', 'Webpack']

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

基本上每一种编程语言中都有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

  • 一点注意事项

    assertprint是不同的。print()可以正常工作,但assert()是错误的。这是因为print()是一个python内建方法而assert()不是。看如下例子:

    assert(2 + 2 == 5, "Oops something went wrong.")是错误的。

    assert 2 + 2 == 5, "Oops something went wrong."是正确的。

    其中第一条代码错误的原因是:根据assert的意义,程序将会检测assert后面的expression的值,也就是bol((2 + 2 == 5, "Oops something went wrong."))。而Python中一个非空元组的布尔值是True

    再比如assert(False)。当()出现在assert后面时,Python编译器会认为assert后面的输入是一个元组。而一个非空元组的布尔值总为True。因此assert()并不能正常工作。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

耀凯考前突击大师

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值