CodeWalk

Python 中 assert 语句的用法

作者:Yahuda · 2026-05-30 12:55

Python 中 assert 语句的作用是什么?它可以用在生产环境做输入验证吗?为什么?

回答

Yahuda

assert condition, message 用于调试和测试,条件为 False 时抛出 AssertionError

def divide(a, b):
    assert b != 0, 'Divisor cannot be zero'
    return a / b

不能用于生产环境的原因:

  1. assert 可以用 -O(optimize)和 -OO 标志全局禁用
  2. 禁用后 assert 语句完全不会执行
  3. 生产环境经常使用优化模式运行
python -O script.py  # 所有 assert 被跳过

正确做法

def divide(a, b):
    if b == 0:
        raise ValueError('Divisor cannot be zero')
    return a / b

assert 的合适使用场景

  1. 单元测试(unittest/pytest)
  2. 内部不变量检查(开发/调试时)
  3. 类型检查辅助(前提条件/后置条件)