关于python:检查错误的正确方法是什么?

what is the correct way to check for False?

本问题已经有最佳答案,请猛点这里访问。

哪个更好?(为什么?)

1
if somevalue == False:

1
if somevalue is False:

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


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

1
if isinstance(somevalue, bool) and not somevalue

这并不依赖于False是一个单件。如果总是单身,你也可以这样做:

1
if somevalue is False

但python的pep8指出,您不应该关心它是否与类有关,而应该只使用:

1
if not somevalue

这将评估somevalue是否"不可靠"。请参见有关真值测试的python文档。

PEP8状态:

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

并举例说明:

1
2
3
Yes:   if greeting:
No:    if greeting == True:
Worse: if greeting is True:

在您的案例中,这意味着:

1
2
3
Yes:   if not greeting:
No:    if greeting == False:
Worse: if greeting is False:

记住,除了空字符串'',每个字符串都被认为是"真实的"。


is正在检查两个对象是否完全相同。==正在检查是否平等。

如果你想检查某个东西是否是假的,例如,与True相反的零,那么做if something == False

正如评论中提到的,您当然可以使用if not something,它可能会提高可读性很多,但与if bool(something) == False相同。

我更喜欢平等,因为在我看来,以东x1〔2〕和以东x1〔7〕在判断是真是假方面,应该像以东x1〔8〕和以东x1〔9〕那样。例如,("a" =="a") == FalseFalse的评估与("a" =="a") == 0的评估类似。