<<< Frank Millman>>> My 'aha' moment came when I understood that a python 
object has only three properties - a type, an id, and a value. It does *not* 
have a name.

Yes, Frank, it is a bit like how some people need to wrap their minds around a 
concept like an anonymous function. It has no name and for many purposes needs 
no name, but at the same time can be bound to one or more names if needed. 

Some people will encounter a situation where you need to pass a function to be 
called such as a key function for determining the sort order and they will 
create a new function first the usual way with a name and then pass it along by 
name. That works fine but the function then persists while not being used again 
and even choosing a name can have consequences if the same name is already in 
use and so on.

Experienced programmers might use some kind of lambda expression in-line as the 
function as an object is then created, and passed along as a reference to be 
used and probably discarded once nothing refers to it. 

Similar things can happen if an object is created as part of a larger complex 
such as a list or deque of them. Each item can be referenced unambiguously 
without having a formal name. You can pop off the next one an use it or ask to 
take the fifth. It may acquire and lose names as the program runs but sometimes 
can have many names or none.

Getting people to see that an object exists whether it has no name and to speak 
about them with that understanding can be a problem. We as humans seem to think 
we are our names. But I know my names have changed over the years partially 
because I moved between countries and I have several additional names used just 
for special purposes, and yet for some purposes I am simply a number. If I 
raise my class in a lecture hall where my name is not known, they may point at 
me or ask the guy in the blue short to talk.  At the Department of Motor 
Vehicles, my name, like everyone else, is NEXT!

The real point is what Python does, not what other situations require. Two 
objects are equal does not always mean what you think or want it to mean. What 
we are discussing here is two objects loosely of type "name" that are being 
compared not for whether THEY are themselves equal as in the same symbols 
composing them and perhaps living in the same namespace. The question was about 
two objects that contained references to another object or even to different 
parts of another object. As it happens, that can be a deeper question in which 
some parts are not a required aspect of the language and may be part of one of 
many possible implementations. And, as noted, the names can be detached from 
that reference too so a link is not permanent.

Have we beaten this one to death yet?


-----Original Message-----
From: Python-list <python-list-bounces+avi.e.gross=gmail....@python.org> On 
Behalf Of Frank Millman
Sent: Sunday, January 15, 2023 12:47 AM
To: python-list@python.org
Subject: Re: To clarify how Python handles two equal objects





--
https://mail.python.org/mailman/listinfo/python-list

-- 
https://mail.python.org/mailman/listinfo/python-list

Reply via email to