哪个更好? (为什么?)
if somevalue == False:
或
if somevalue is False:
如果somevalue
是字符串,您的答案会改变吗?
答案 0 :(得分:4)
它取决于somevalue
可以是什么:如果somevalue
可以是任何东西,你可以检查它是否为布尔值not
:
if isinstance(somevalue, bool) and not somevalue
这不依赖于False
是单身人士。如果它总是单身,你也可以这样做:
if somevalue is False
但是 Python的PEP8声明你不应该关心这个类是否只是使用:
if not somevalue
这将评估somevalue
是否为“假”。请参阅Python documentation on Truth value testing。
PEP8声明:
不要使用==。
将布尔值与True或False进行比较
并给出了这些例子:
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”。
答案 1 :(得分:3)
is
正在检查两个对象是否真的是同一个对象。 ==
正在检查是否相等。
如果您想检查某些内容是否有误,例如零,与True
相反,执行if something == False
。
正如评论中所提到的,你当然可以if not something
,它可以提高可读性,但它与if bool(something) == False
相同。
我更喜欢平等,因为在我看来,True
和False
的行为应该像1
和0
一样 true 或 false 。例如,("a" == "a") == False
评估为False
,就像("a" == "a") == 0
一样。