Python真实性 - 不同检查之间的不同行为

时间:2016-04-08 11:36:18

标签: python truthiness

我浏览了Truthiness in Python并了解[]和类似的空对象在Python中被解释为False

但是当我在REPL中输入以下内容时,它会返回False

>>> [] == False
False

这怎么可能?

2 个答案:

答案 0 :(得分:4)

因为==不检查真实性,它会检查相等性。这两个对象的类型不同,所以它们并不相同。

如果您想明确查看对象的真实性,请将其转换为bool:

>>> bool([])
False

请注意,您永远不会在实际代码中执行此操作,因为真实性是转换是隐含的。相反,你会这样做:

if my_value:
    ...do something...

答案 1 :(得分:-2)

因为如果对象等于其他...

== 会返回相等

在这种情况下[] isnt None只是一个空数组 e.g:

if variable:
    print "true"
else:
    print "false"

如果变量为空字符串('')或空数组([]),则打印出false。

if variable == None:
    print "true"
else:
    print "false"

如果变量为空字符串('')或空数组([]),则打印出fasle,因为它不是None类型(其类型等于str或list)。

<强> == : 如果2个变量相等则返回True

如果: 如果变量不是None并且ist不是空实例(如空数组或字符串)

,则返回True