擅长:python、mysql、java
<p>如果查看反汇编代码,可以看到它确实加载了同一个对象。(2号线和14号线)</p>
<pre><code>>>> import dis
>>> codeObj = compile("from collections import Counter as c; from collections import Counter", "foo", "exec")
>>> dis.dis(codeObj)
1 0 LOAD_CONST 0 (0)
2 LOAD_CONST 1 (('Counter',))
4 IMPORT_NAME 0 (collections)
6 IMPORT_FROM 1 (Counter)
8 STORE_NAME 2 (c)
10 POP_TOP
12 LOAD_CONST 0 (0)
14 LOAD_CONST 1 (('Counter',))
16 IMPORT_NAME 0 (collections)
18 IMPORT_FROM 1 (Counter)
20 STORE_NAME 1 (Counter)
22 POP_TOP
24 LOAD_CONST 2 (None)
26 RETURN_VALUE
</code></pre>
<p>正如其他人提到的,您可以使用<code>id(c) == id(Counter)</code>或<code>c is Counter</code>来测试它们是否具有相同的引用。你知道吗</p>