gpt4 book ai didi

python - 当 "[] == False"成功时,为什么 "if not []"评估为 False?

转载 作者:IT老高 更新时间:2023-10-28 22:01:57 24 4
gpt4 key购买 nike

我问这个是因为我知道检查列表是否为空的pythonic方法如下:

my_list = []
if not my_list:
print "computer says no"
else:
# my_list isn't empty
print "computer says yes"

将打印 computer says no 等。所以这导致我用 False 真值识别 [];但是,如果我尝试“直接”比较 [] 和 False,我会得到以下结果:

>>> my_list == False
False
>>> my_list is False
False
>>> [] == False
False

等等……

这里发生了什么?我觉得我错过了一些非常明显的东西。

最佳答案

if 语句评估 bool 上下文中的所有内容,就像隐式调用 bool()内置函数。

以下是您实际检查 if 语句将如何评估事物的方式:

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

参见 Truth Value Testing 上的文档, 空列表被认为是错误的,但这并不意味着它们等同于 False

PEP 285也有一些关于为什么以这种方式实现的出色信息,请参阅 已解决的问题 部分中的最后一个项目符号,以了解处理 x == True 的部分>x == False 特别是。

对我来说最有说服力的方面是 == 通常是可传递的,所以 a == bb == c 意味着 a == c。因此,如果这是您所期望的方式,并且 [] == False 为真且 '' == False 为真,则可能会假设 [] == '' 应该是真的(即使它显然不应该是没有隐式类型转换的语言)。

关于python - 当 "[] == False"成功时,为什么 "if not []"评估为 False?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10440792/

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