gpt4 book ai didi

python - 空列表 boolean 值

转载 作者:太空宇宙 更新时间:2023-11-03 20:16:53 24 4
gpt4 key购买 nike

这可能很愚蠢,但对我来说有点令人困惑:

In [697]: l=[]

In [698]: bool(l)
Out[698]: False

In [699]: l == True
Out[699]: False

In [700]: l == False
Out[700]: False

In [701]: False == False
Out[701]: True

为什么l==False返回FalseFalse == False返回True

最佳答案

您正在根据 boolean 值 False 的文字值检查它。与 'A' == False 相同不会为 true。

如果你转换它,你会看到差异:

>>> l = []
>>> l is True
False
>>> l is False
False
>>> l == True
False
>>> l == False
False
>>> bool(l) == False
True

False == False 为 true 的原因是因为您正在比较相同的对象。它与 2 == 2'A' == 'A' 相同。

当您看到诸如 if l: 之类的内容并且此检查从未通过时,困难就来了。这是因为您正在检查该项目的真值。按照惯例,所有这些项目都将无法通过 boolean 检查 - 也就是说,它们的 boolean 值将为 False:

  • 错误(显然)
  • 任何空序列:''[]()
  • 任何“零”值:00.0
  • 任何空集合:{}(空字典)
  • len() 返回 0 的任何内容

这些被称为“错误”值。 其他一切都是“真实的”。这可能会导致一些奇怪的事情,例如:

>>> def foo():
... pass
...
>>> bool(foo)
True

这里还需要注意的是,不返回显式值的方法,其返回类型始终为 None,这会导致以下情况:

>>> def bar():
... x = 1+1
...
>>> bool(bar)
True
>>> bool(bar())
False

关于python - 空列表 boolean 值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58398072/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com