Python assert(断言)

assert(断言)是什么?

在 Python 中,assert(断言)用于判断一个表达式,然后在表达式为 False 时触发异常。断言可以在条件不满足程序运行的情况下直接返回错误,而不必等待程序运行后出现崩溃的情况。

Python assert 语句

断言 assert 一般在开发调试阶段使用,而非在生产环境中使用。断言 assert 在用户定义的约束条件不满足时,就触发 AssertionError 异常。它主要功能是帮助程序员调试程序,从而保证程序运行的准确性。

在一个程序还没有完善之前,我们不知道程序在哪里会出错。与其让它在运行出现崩溃,不如在出现错误条件时就已经让它抛出错误,此时就需要用到断言 assert 了。

Python assert 语法

在 Python 中,我们可以使用 assert 关键字来实现断言。

语法:

assert condition, message

说明:

condition 是必选的,它表示判断的表达式。message 是可选的,它表示抛出异常时的提示文本。assert 会判断条件(condition)是否成立。如果不成立,则抛出异常。

当包含 message 时,下面 2 种写法是等价的:

# 写法 1
assert condition, message

# 写法 2
if not condition:
    raise AssertionError(message)

当不包含 message 时,下面 2 种写法是等价的:

# 写法 1
assert condition

# 写法 2
if not condition:
    raise AssertionError()

此外需要注意的是,assert 是一个关键字,而不是一个函数。因此我们不能使用 “()”。

# 正确
assert condition, message

# 错误
assert(condition, message)

如果使用 assert(condition, message) 这种写法,此时 (condition, message) 会被 Python 当作一个元组。非空元组的布尔值永远是 True,这会导致断言彻底失效,永远不会报错!

Python assert 示例

接下来,我们通过几个简单的例子来讲解 Python assert 是如何使用的。

示例:assert 基本用法

def check(num):
    # 自定义错误提示信息
    assert type(num) == int, '必须传入整数类型!'
    print('参数校验通过')

check('666')

运行结果如下。

AssertionError: 必须传入整数类型!

分析:

对于 assert 来说,如果条件为 False,它会立即抛出错误,这比返回一个 “False” 的结果更加地直观。

上一篇: Python finally 子句

下一篇: Python 抛出异常

给站长反馈

绿叶网正在不断完善中,小伙伴们如果发现任何问题,还望多多给站长反馈,谢谢!

邮箱:lvyenet@vip.qq.com

「绿叶网」服务号
绿叶网服务号放大
关注服务号,微信也能看教程。
绿叶网服务号