Python 中 assert 语句的用法
Python 中 assert 语句的作用是什么?它可以用在生产环境做输入验证吗?为什么?
回答
Yahuda
assert condition, message 用于调试和测试,条件为 False 时抛出 AssertionError。
def divide(a, b):
assert b != 0, 'Divisor cannot be zero'
return a / b
不能用于生产环境的原因:
assert可以用-O(optimize)和-OO标志全局禁用- 禁用后 assert 语句完全不会执行
- 生产环境经常使用优化模式运行
python -O script.py # 所有 assert 被跳过
正确做法:
def divide(a, b):
if b == 0:
raise ValueError('Divisor cannot be zero')
return a / b
assert 的合适使用场景:
- 单元测试(unittest/pytest)
- 内部不变量检查(开发/调试时)
- 类型检查辅助(前提条件/后置条件)