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