跳到主要内容

真假值判断

Python 判断真假时,看值本身是否为"空"或"零",而不是看它表示的内容。字符串只要非空就是 True,哪怕内容是 "0"。

常见值的真假值​

值类型真假值
NoneNoneTypeFalse
""strFalse
0intFalse
"0"strTrue
[]listFalse

判断 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 才会进来")