1. 条件判断的本质逻辑
Python中的if x:语句表面看是判断变量x的真假,实际上执行的是隐式的布尔值转换。这种简洁写法背后隐藏着Python语言设计者对"真实性"(truthiness)的独特理解。
所有Python对象在布尔上下文中都会被解释为True或False,这是通过调用对象的__bool__()魔术方法实现的(Python 3.x)或__nonzero__()(Python 2.x)。当这些方法未定义时,解释器会回退到__len__()方法。
关键理解:
if x:不等于if x is True:,前者是真实性测试,后者是严格的对象身份比较
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 内置类型的真实性规则
2.1 默认判定标准
以下是Python核心类型的真实性判定规则表:
| 类型 | 判定为False的情况 | 判定为True的情况 |
|---|---|---|
| 布尔型 | False |
True |
| 数值型 | 0, 0.0, 0j |
任何非零值 |
| 序列类型 | "", [], (), bytearray() |
非空序列 |
| 映射类型 | {} |
非空字典 |
| None | 总是False |
无 |
| 自定义对象 | 未定义__bool__()且__len__()返回0 |
其他情况 |
