通常,关键字in
在python中检查什么?平等,身份,还是别的什么?
例子:
假设我有两个具有不同__eq__
运算符的类 X 和 Y
class X:
def __eq__(self,other):
return False
class Y:
def __eq__(self,other):
return True
现在我可以做
a = X()
b = a
k = [a]
b in k # -> True
这建议对我进行身份检查。
但我也可以
c = Y()
d = Y()
c is d # -> False
l = [d]
c in l # -> True
这表明检查平等。我想出的唯一理论是它首先检查身份,如果不是这种情况,则检查相等性。那是对的吗?
检查列表中的包含等同于查找每个元素的身份或相等性。
从文档:
对于list、tuple、set、frozenset、dict 或 collections.deque等容器类型,表达式
x in y
等价于any(x is e or x == e for e in y)
(需要注意的是,基于散列的容器中的对象,如集合,必须具有与其相等性定义一致的散列实现。)
对于用户定义的容器类型, 的行为in
由__contains__
方法决定。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句