【发布时间】:2021-10-10 13:30:40
【问题描述】:
当结果总是错误时,我在 django 中编写了一个简单视图然后我注意到 if 语句在不应该触发时触发了我检查代码以意识到它是正确的这是我测试的代码
>>> li = [""]
>>> li == True
False
>>> if li:
... print("li is true")
...
li is true
>>> li == False
False
>>> li == None
False
>>> li == True
False
我很困惑?? li == False 是 false 不应该返回 true 吗?
【问题讨论】:
-
列表不为空,因为它包含一个项目(在这种情况下为空字符串),因此任何非空列表都是真实的(在布尔上下文中计算为
True,如在if li:)。但它与 True 不等于,因为True和您的列表完全不同... -
if li:,list不为空返回true,为空返回false -
由于同样的原因,它也不能等于到
False。 -
@ahmed mani,哦,好吧,这样想是有道理的。但正如蒂埃里所说,一个空字符串的列表与一个空列表是不一样的。