擅长:python、mysql、java
<p>从我对CPython源代码的读取来看,<code>contains</code>的测试似乎检查是否在集合中找到了密钥;如果不是,并且密钥是<code>set</code>对象,则尝试将密钥转换为<code>frozenset</code>,然后测试该密钥。类似<code>remove</code>的操作也存在相同的行为,如下所示:</p>
<pre><code>>>> s = set([frozenset([1,2])])
>>> s
{frozenset({1, 2})}
>>> s.remove(set([1,2]))
>>> s
set()
</code></pre>
<p>解释器中讨论的代码是<code>Objects/setobject.c</code>中的<code>set_contains()</code>函数</p>