当前位置: 首页 > news >正文

assert的基本用法

一、assert 是什么

assert 是 Python 提供的一种 调试语句,用于在程序运行时做“自检”,
验证一个表达式是否为真(True)。

它的作用就像一个 自动检测点(checkpoint)

如果条件为 True → 程序继续执行
如果条件为 False → 抛出 AssertionError 异常(可带错误提示信息)


二、基本语法

assert 条件表达式, 可选的错误提示信息

等价于:

if not 条件表达式:raise AssertionError(错误提示信息)

三、用法示例

✅ 示例 1:最基本用法

x = 10
assert x > 0
print("x 是正数")

输出:

x 是正数

因为条件 x > 0 成立,程序继续执行。


❌ 示例 2:条件不成立时

x = -1
assert x > 0, "x 必须是正数"
print("不会执行到这里")

输出:

Traceback (most recent call last):...
AssertionError: x 必须是正数

程序直接中断。


✅ 示例 3:结合函数使用

def divide(a, b):assert b != 0, "除数不能为0"return a / bprint(divide(10, 2))   # ✅ 正常
print(divide(10, 0))   # ❌ 报错

当除数为 0 时,assert 会立刻抛出异常,防止运行时错误。


四、常见使用场景

场景 示例 说明
✅ 参数校验 assert isinstance(x, int) 确保函数输入类型正确
✅ 环境检查 assert os.path.exists('/data') 检查依赖目录是否存在
✅ 版本检测 assert Version(docker_version) >= Version('19.03') 检查系统组件版本
✅ 配置检测 assert config['port'] > 0 校验配置文件参数合法性

五、注意事项(非常重要)

  1. 断言主要用于开发与调试阶段,不推荐用于正式业务逻辑判断。

因为 Python 在运行时可使用命令:

python -O script.py

加上 -O(optimize)参数后,所有 assert 语句会被 忽略

所以生产代码中建议用 if + raise 或异常处理代替断言:

if not condition:raise ValueError("错误信息")

六、实际运维/工程中的应用举例

示例:Docker 版本检测

from packaging.version import Version
from docker import from_envclient = from_env()
docker_version = client.version()['Components'][0]['Version']assert Version(docker_version) >= Version('19.03'), "需要 Docker 19.03 或更高版本"

示例:配置检查

config = {"port": 8080, "host": "127.0.0.1"}
assert "port" in config and config["port"] > 0, "配置文件缺少 port 或 port 非法"

七、总结

项目 说明
关键词 assert
作用 在运行时检查表达式是否为真
为假时 抛出AssertionError
异常
适用场景 调试、自检、开发时快速验证假设
注意事项 发布生产代码时可被禁用,不应用于核心逻辑判断
http://www.hskmm.com/?act=detail&tid=31506

相关文章:

  • 1688代发铺货规格匹配设置
  • 2025年整平机厂家最新推荐排行榜,精密整平机,数控整平机,自动整平机,板材整平机源头厂家专业选购指南
  • task2
  • KiloCode 与 Claude Code 在长上下文文件写入操作中的稳定性差异深度解析
  • 2025年机械加工厂家最新权威推荐榜:钣金/焊接/零件/非标自动化/精密金属加工,专业定制与技术创新实力解析
  • 2025年10月15号随笔
  • Ubuntu20.04安装NVIDIA显卡驱动、CUDA Toolkit、cuDNN步骤(二) - 指南
  • java基础8-ArrayList
  • 两个用于从B站下载视频的Shell脚本
  • 2025年冲压件厂家最新权威推荐榜:新能源/光伏/精密/异形/五金/铝/汽配/不锈钢/家具冲压件源头厂商深度解析
  • P3800 Power 收集和单调队列优化dp小总结
  • 微信群机器人接口
  • 2025 年杭州品牌策划公司机构推荐榜:餐饮品牌策划/家电品牌策划聚焦实战力与适配性,这家杭州本土机构值得关注
  • 2025 年土工格栅厂家推荐榜:聚焦工程适配与品质保障,优选山东大成工程材料有限公司
  • 2025年液压阀块厂家最新权威推荐榜:液压阀/阀块加工/阀块零件机加工专业制造商,技术实力与市场口碑深度解析
  • logging模块用法
  • 软件服务行业,被玩坏了的阿米巴
  • 实用指南:WordPress提速指南:Memcached+Super Static Cache+CDN缓存网站内容
  • AI元人文中价值原语博弈系统的理论建构与实践意义探析
  • LGP3201 [HNOI 2009] 梦幻布丁 学习笔记
  • 2025年石头纸设备/吹塑机厂家最新权威推荐榜:环保石头纸、碳酸钙石头纸、固废石头纸及挤出吹塑机、注射吹塑机、半导体清洗液瓶子吹塑机专业选购指南
  • AI技术新突破:图像编辑与浏览器智能体
  • PWN手的成长之路-16-OGeek2019-babyrop
  • 2025年掘进机厂家最新权威推荐榜:隧道掘进机、煤矿掘进机、岩石掘进机、盾构掘进机,专业实力与高效施工口碑之选
  • AI元人文:关于“价值原语博弈”的对话
  • 2025/10/15
  • 2025年冷却塔厂家最新权威推荐榜单:工业冷却塔、闭式冷却塔、横流式冷却塔、逆流式冷却塔专业制造商精选
  • 2025年法兰保护套厂家最新推荐排行榜:管道法兰保护罩,不锈钢法兰保护套,耐腐蚀法兰保护套公司精选
  • 2025年扒胎机厂家最新权威推荐榜:液压无损扒胎机,全自动扒胎机,汽保扒胎机,轮胎扒胎机,汽车扒胎机,大轮胎扒胎机,无损扒胎机,辽南扒胎机,小车扒胎机,立式扒胎机专业选购指南
  • 2025年中国太阳能板品牌TOP10(排行榜):格局巨变