Python 的 assert 语句

本文介绍了Python的assert语句,用于测试条件是否满足,若条件不满足则抛出AssertionError异常。文章详细阐述了assert的基本语法,用法,以及何时和如何正确使用assert。通过实例展示了assert在防止非法输入、确保函数预期行为等方面的用途,并指出了一些常见的使用误区,强调在关键的安全性和错误检查场景中不应依赖assert,而应使用条件语句配合异常处理。
摘要由CSDN通过智能技术生成

什么是 assert?

Python 的 assert 语句,可以说是一个 debug 的好工具,主要用于测试一个条件是否满足。如果测试的条件满足,则什么也不做,相当于执行了 pass 语句;如果测试条件不满足,便会抛出异常 AssertionError,并返回具体的错误信息(optional)。

它的具体语法是下面这样的:


assert_stmt ::=  "assert" expression ["," expression]

我们先来看一个简单形式的assert expression,比如下面这个例子:


assert 1 == 2

它就相当于下面这两行代码:


if __debug__:
    if not expression: raise AssertionError

再来看assert expression1, expression2的形式,比如下面这个例子:


assert 1 == 2,  'assertion is wrong'

它就相当于下面这两行代码:


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

这里的__ debug__是一个常数。如果 Python 程序执行时附带了-O这个选项,比如Python test.py -O,那么程序中所有的 assert 语句都会失效,常数__ debug__便为 False;反之__debug__则为 True。

不过,需要注意的是,直接对常数__debug__赋值是非法的,因为它的值在解释器开始运行时就已经决定了,中途无法改变。

此外,一定记住,不要在使用 assert 时加入括号,比如下面这个例子:


assert(1 == 2, 'This should fail')
# 输出
<ipython-input-8-2c057bd7fe24>:1: SyntaxWarning: assertion is
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值