如果空 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/