一、概述
assert(断言)用于判断一个表达式,在表达式条件为 false 的时候触发异常。
断言可以在条件不满足程序运行的情况下直接返回错误,而不必等待程序运行后出现崩溃的情况,例如我们的代码只能在 Linux 系统下运行,可以先判断当前系统是否符合条件
二、语法
1、不带参数
assert expression
等价于:
if not expression:
raise AssertionError
2、带参数
assert 后面也可以紧跟参数:
assert expression [, arguments]
等价于:
if not expression:
raise AssertionError(arguments)
其中,expression
是一个需要进行断言检查的表达式,如果表达式的结果为 True
,则断言通过,程序继续执行;如果表达式的结果为 False
,则断言失败,程序会抛出 AssertionError
异常。message
是可选的参数,用于在断言失败时输出自定义的错误信息。
assert
的主要作用是在开发和调试阶段对代码进行断言检查,以确保程序的正确性。在生产环境中,通常会关闭断言检查,以避免额外的性能开销。
三、为True通过,False不通过
常用的断言
- assert 数据1==数据2
- 判断数据1与数据2是否相等,相等则为True通过
- assert str1 in str2
- 判断后面字符串是否包含前面字符串,包含则为True通过,否则不通过,必须连续,不能有间隔 不能跳字符
- assert True 或非0
- 直接通过
- assert False 或0
- 直接不通过
# 检查某个条件是否为真,如果为假则抛出 AssertionError
x = 5
assert x > 0, "x 应该大于 0"
# 可选的错误信息参数可以提供更多的上下文信息
y = 0
assert y != 0, "y 不应该等于 0,但实际上 y = {}".format(y)
# 在调试阶段,使用 assert 进行变量值的断言检查
z = 10
assert z != 10, "z 的值应该为 10"
# assert 语句可以与任何表达式一起使用
assert (x > 0) and (y != 0) and (z == 10), "条件不满足"
四、使用 -O(大写的字母O)参数启用优化模式
使用 -O
参数可以启用 Python 解释器的优化模式。在这种模式下,Python 解释器会忽略代码中所有带有 assert
关键字的语句,因此在生产环境中,可以通过这种方式关闭断言检查,以避免因断言检查而引入额外的性能开销。
在命令行中,可以通过以下方式来运行 Python 程序并启用优化模式:
python -O your_script.py
这样就可以在生产环境中关闭断言检查,确保程序的性能不受影响。