该if
语句在布尔上下文中评估所有内容,就像对bool()
内置函数的隐式调用一样。
这是您实际检查if
语句如何评估事物的方式:
>>> bool([])
False
>>> bool([]) == False
True
参见真值测试文档,空列表被 认为是错误的 ,但这并不意味着它们等同于False
。
PEP 285也有它为什么以这种方式实现一些优秀的信息,请参阅在非常最后一颗子弹已解决的问题 部分的一部分,随着交易x == True
和x == False
明确。
最有说服力的方面我是==
一般传递的,所以a == b
和b == c
暗示a == c
。因此,如果这是您所期望的方式,[] == False
并且'' == False
是正确的,那么您可能会认为它[] == ''
应该是正确的(即使它显然不应该使用没有隐式类型转换的语言)。