检查 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
相同。
我更喜欢平等,因为在我看来,True
和 False
应该像 1
和 0
一样 真 或假。例如 ("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"
哪个更好? (为什么?)
if somevalue == False:
或
if somevalue is False:
如果 somevalue
是一个字符串,你的答案会改变吗?
is
正在检查两个对象是否确实 同一个对象 。 ==
正在检查是否相等。
如果你想检查某些东西是否是假的,例如zero,与 True
相反,做 if something == False
.
如评论中所说,你当然可以if not something
,它可能会提高可读性,但它与if bool(something) == False
相同。
我更喜欢平等,因为在我看来,True
和 False
应该像 1
和 0
一样 真 或假。例如 ("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:
请记住,除了空字符串 ''
.