0
in
運算符如何爲Python工作?'in'運算符如何爲Python工作?
在下面的例子中,我有兩個名爲不同對象的命名對象,但in
運算符對於包含其中一個對象的數組計算爲True。
是in
檢查數組是否包含對象,或者檢查數組中的任何對象是否相等?我試圖搜索文檔,但找不到任何具體的東西,只是簡單的例子。
In [3]: a = namedtuple('test', ['t'])
In [6]: b = a(1)
In [7]: c = a(1)
In [8]: b is c
Out[8]: False
In [9]: id(b)
Out[9]: 54740808
In [10]: id(c)
Out[10]: 88817352
In [11]: c in [b]
Out[11]: True
In [12]: b in [c]
Out[12]: True
In [13]: c == b
Out[13]: True
什麼'in'不會由'__contains定義__()'上操作者的右側的對象的方法。如果這是一個'list',它會調用'__eq __()'方法(這可以通過使用自定義的__eq __()方法實現一個類來解決),在'set'或'dict_keys'上,它比較hash我想,但不知道。如果任何元素沒有'__eq __()'方法,''不會返回'NotImplemented',那些只是默默地跳過。 – deeenes