python - 为什么对空集的显式测试不起作用

标签 python python-3.x

如果空 set()False,则以下代码中的 if test == False 子句不应计算为 真的

test = set() 

#  empty sets are false
if test == False:
    print("set is empty")
else:
    print("set NOT empty")

if not test:
    print("set is empty")

输出:

set NOT empty
set is empty

最佳答案

简单来说,等于运算符== 将在这两个对象之间执行相等比较:集合和 bool 值永远不会相等,因此比较结果为假。另一方面,仅检查 if obj(或 if not obj)将检查对象的真实性,可以对每个对象进行评估。在某种程度上,这实际上使用 if bool(obj) 进行了类型转换。对于空集,这是错误的。

data model ,这两个操作调用不同的特殊方法名称。使用相等运算符比较两个对象将调用 __eq__在对象上调用 bool() 时将调用 __bool__ .

关于python - 为什么对空集的显式测试不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33452797/

相关文章:

python - 如何检索 fetch 的执行顺序?

python - 通配 rune 件名和 Pydub

python - For循环在解析中返回相同的字符

python - 用于 HTTP 服务器之外的 Python3 的 Websocket 服务器

Python map() 字典值

python - Pycharm:实际上更改包的名称

python - 如何在 Python 中用逗号和指定的精度数字格式化数字

python-3.x - 如何从 Python 代码对象构造可调用对象?

python - 如何编写一个 BeautifulSoup 过滤器,它只解析标签之间带有特定文本的对象?

python-3.x - 如何从 Base64 转换为字符串 Python 3.2