Python truthiness - 不同检查之间的不同行为
Python truthiness - Different behavior between different checks
我经历了Truthiness in Python,了解到[]
和类似的空对象在Python中被解释为False
。
但是当我在 REPL 中输入以下内容时,它 returns False
:
>>> [] == False
False
这怎么可能?
因为 ==
不检查真实性,它检查相等性。这两个对象属于不同类型,所以它们不相等。
如果你想明确地看到一个对象的真实性,把它转换成布尔值:
>>> bool([])
False
请注意,您永远不会在实际代码中执行此操作,因为真实的一点是转换是隐式的。相反,你会这样做:
if my_value:
...do something...
因为 == returns 如果对象等于其他...
在这种情况下 [] 不是 None 只是一个空数组
例如:
if variable:
print "true"
else:
print "false"
如果变量是空字符串 ('') 或空数组 ([]),则打印出 false。
if variable == None:
print "true"
else:
print "false"
如果变量是空字符串 ('') 或空数组 ([]),这会打印出 fasle,因为它不是 None 类型(它的类型等于 str 或 list)。
==:
returns 如果 2 个变量相等则为真
如果:
returns 如果变量不是 None 且不是空实例(如空数组或字符串)则为真
我经历了Truthiness in Python,了解到[]
和类似的空对象在Python中被解释为False
。
但是当我在 REPL 中输入以下内容时,它 returns False
:
>>> [] == False
False
这怎么可能?
因为 ==
不检查真实性,它检查相等性。这两个对象属于不同类型,所以它们不相等。
如果你想明确地看到一个对象的真实性,把它转换成布尔值:
>>> bool([])
False
请注意,您永远不会在实际代码中执行此操作,因为真实的一点是转换是隐式的。相反,你会这样做:
if my_value:
...do something...
因为 == returns 如果对象等于其他...
在这种情况下 [] 不是 None 只是一个空数组 例如:
if variable:
print "true"
else:
print "false"
如果变量是空字符串 ('') 或空数组 ([]),则打印出 false。
if variable == None:
print "true"
else:
print "false"
如果变量是空字符串 ('') 或空数组 ([]),这会打印出 fasle,因为它不是 None 类型(它的类型等于 str 或 list)。
==: returns 如果 2 个变量相等则为真
如果: returns 如果变量不是 None 且不是空实例(如空数组或字符串)则为真