在 Python PEP 8结束时,我正在阅读:
不要使用以下方法将布尔值与 True 或 False 进行比较
==
Yes: if greeting: No: if greeting == True: Worse: if greeting is True:
当布尔值是时,我对这个建议没有任何问题True
,但在检查时听起来很奇怪False
。
如果我想知道变量greeting 是否为False,为什么不写以下内容?
if greeting == False:
如果我这样写if not greeting:
的话,就会和上面的说法有很大不同的意思。如果问候语是无怎么办?如果它是一个空字符串怎么办?这个 PEP 8 建议是否意味着存储布尔值的变量应该只包含 True 或 False 并且这些变量应该避免 None ?
在我看来,它看起来像是来自其他具有静态类型的语言的推荐,并且不适合 Python,至少与 False 相比。
顺便说一句,为什么被if greeting is True:
描述为比if greeting == True:
?我们是否也应该明白那if greeting is False:
也更糟if greeting == False:
?