On 2021-06-15 17:18, Dieter Maurer wrote:
Chris Angelico wrote at 2021-6-15 19:08 +1000:
On Tue, Jun 15, 2021 at 6:32 PM Dieter Maurer <die...@handshake.de> wrote:

Chris Angelico wrote at 2021-6-15 05:35 +1000:
>On Tue, Jun 15, 2021 at 5:12 AM Jach Feng <jf...@ms4.hinet.net> wrote:
>>
>> >>> n = [(1,2) for i in range(3)]
>> >>> n
>> [(1, 2), (1, 2), (1, 2)]
>> >>> id(n[0]) == id(n[1])  == id(n[2])
>> True
>
>This is three tuples. Tuples are immutable and you get three
>references to the same thing.

In addition: object identity (as revealed by `id(...)`) is
an implementation detail. Do not rely on it!

Hmm, not always. In this case, object identity isn't guaranteed -
every literal could give you a unique object - but in other cases,
object identity is a language guarantee. For instance:

As far as I know, there are no guarantees are the language level.
There are some (partially documented) implementation details
for CPython (which is just one possible implementation).

There is a language guarantee that every object has an identity that's given by 'id' and that 'x is y' is equivalent to 'id(x) == id(y)'. In CPython it happens to be the address of the object, but that's an implementation detail.
--
https://mail.python.org/mailman/listinfo/python-list

Reply via email to