检查 False 的正确方法是什么?

What is the correct way to check for False?

哪个更好? (为什么?)

if somevalue == False:

if somevalue is False:

如果 somevalue 是一个字符串,你的答案会改变吗?

is 正在检查两个对象是否确实 同一个对象 == 正在检查是否相等。

如果你想检查某些东西是否是假的,例如zero,与 True 相反,做 if something == False.

如评论中所说,你当然可以if not something,它可能会提高可读性,但它与if bool(something) == False相同。

我更喜欢平等,因为在我看来,TrueFalse 应该像 10 一样 。例如 ("a" == "a") == False 计算结果为 False 就像 ("a" == "a") == 0 一样。

这取决于 somevalue 可以是什么:如果 somevalue 可以是任何你可以检查它是布尔值和 not:

if isinstance(somevalue, bool) and not somevalue

这不依赖于 False 是单身人士。如果它总是一个单例,你也可以这样做:

if somevalue is False

但是 Python 的 PEP8 声明你不应该关心它是否关于 class 并且只使用:

if not somevalue

这将评估 somevalue 是否为 "falsy"。参见 Python documentation on Truth value testing

PEP8 指出:

Don't compare boolean values to True or False using == .

并给出了这些例子:

Yes:   if greeting:
No:    if greeting == True:
Worse: if greeting is True:

在您的案例中转化为:

Yes:   if not greeting:
No:    if greeting == False:
Worse: if greeting is False:

请记住,除了空字符串 ''.

之外,每个字符串都被视为 "truthy"