真假值判断
Python 判断真假时,看值本身是否为"空"或"零",而不是看它表示的内容。字符串只要非空就是 True,哪怕内容是 "0"。
常见值的真假值
| 值 | 类型 | 真假值 |
|---|---|---|
None | NoneType | False |
"" | str | False |
0 | int | False |
"0" | str | True |
[] | list | False |
判断 None 为什么用 is
None 是全局单例,整个解释器中只有一个实例。is 比较的是内存身份,速度快,且不会被自定义 __eq__ 干扰,是 Python 官方推荐的写法。
value = None
if value is None: # 推荐
print("是 None")
if value == None: # 不推荐:能运行,但可能被 __eq__ 影响,也不符合惯例
print("是 None")
易错点:if not value
not value 会把所有假值都变成 True,无法区分到底是哪一种:
values = [None, "", 0, []]
for value in values:
if not value:
print(repr(value), "都会命中") # 四种情况全部进来
# 只想判断 None 时,必须写清楚:
if value is None:
print("只有 None 才会进来")