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

14 浏览
0 Comments

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

这个问题已经有了答案:

为什么使用 \'==\' 或 \'is\' 来比较字符串有时会产生不同的结果?

使用 \"== False\" 和 \"is not\" 来检查空字符串是否有区别?

哪种方法更好?(为什么?)

if somevalue == False:

还是

if somevalue is False:

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

admin 更改状态以发布 2023年5月21日
0
0 Comments

is用于判断两个对象是否相同。而==用于判断它们的值是否相等。

如果想要判断某个值是否为假,比如0或与True相反,应该使用if something == False

正如评论中所提到的,当然可以使用if not something来判断,这可能会提高可读性,但其作用与if bool(something) == False相同。

我更喜欢使用等号判断,因为在我的印象中,TrueFalse应该像10一样,能够作为真和假的表现。例如,("a" == "a") == False的值为False,就像("a" == "a") == 0一样。

0
0 Comments

这取决于 somevalue 可以是什么:如果 somevalue 可以是任何值,你可以检查它是否是布尔值且不是 False

if isinstance(somevalue, bool) and not somevalue

这不依赖于 False 是否是唯一实例。如果它总是唯一实例,你也可以这样做:

if somevalue is False


但是 Python 的 PEP8 规范声明你不应该关心类的问题,而应该直接使用:

if not somevalue

如果 somevalue 是“Falsy”值则会进行求值。请查看Python关于Truth 值测试的文档

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”,除了空字符串 ''

0