擅长:python、mysql、java
<p><code>reversed</code>返回不实现特定<code>__eq__</code>运算符的iterable,因此使用identity进行比较。在</p>
<p>关于<code>id(reversed(a)) == id(reversed(a))</code>的混淆是因为在对第一个<code>id(...)</code>调用求值后,可以释放iterable(没有引用它),并且第二个iterable可能在第二个<code>id(...)</code>调用完成时重新分配到同一个内存地址。不过,这只是一个巧合。在</p>
<p>试试看</p>
<pre><code>ra1 = reversed(a)
ra2 = reversed(a)
</code></pre>
<p>将<code>id(ra1)</code>与{<cd7>}进行比较,就会发现它们是不同的数字(因为在本例中,iterable对象不能被释放,因为它们被<code>ra1</code>/<code>ra2</code>变量引用)。在</p>