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

时间:2016-05-08 19:01:24

标签: python boolean boolean-expression

哪个更好? (为什么?)

if somevalue == False:

if somevalue is False:

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

2 个答案:

答案 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相同。

我更喜欢平等,因为在我看来,TrueFalse的行为应该像10一样 true false 。例如,("a" == "a") == False评估为False,就像("a" == "a") == 0一样。