Fuzzyman wrote: > (If I understand correctly...) > > The reason he is looking for it, is in order to assert that Python > 'comparison' is broken. a bit this way, but why formulate it with such a negative touch? Lets understand it more as looking for a way to get a deep understanding of the concept behind the Python '==' operator (and many other things related to it) and a way to explain it to a C programmer (because it differs from the concept he knows from C). If it should turn out, that there is some inconsistency in the Python concept it will become apparent why and then it can be discussed further or even lead to a PEP and everyone here will profit from this. If it turns out that there is no inconsistency, one more Python user (i.e. me :-) ) will get deep understanding of this Python concept and maybe can help others seeking same enlightenment.
> > Part of this is because of his assertation that the term 'value' has no > meaning in Python. This seems to me still to be true, but lets postpone the discussion of it (which should first give a definition what 'value' means in Python) and about if it makes sense to use this term to describe something which is far away from the common understanding of it to another thread and a later time when I get even more clear picture about it as it is the case now. > > He bases this on the fact that Java and C define 'value' to mean the > pointer when the object is mutable. I base it on the fact, that a value is what is actually stored in memory in a data structure which can be reached used a name (i.e. an identifier). This way of understanding what value means allows to distinguish between memory content (the value) and memory address (represented by the name of the variable). The concept of the pointer in C does not change the meaning of the term value, because there is a value a pointer has (i.e. there is data in memory addressed by the variable name which is the pointer) and that this value means here an address is another beer (leading to much confusion when learning to work with pointers in C). By the way: please don't mix Javascript and Java - these are two totally different things. Java is a programming language you can compile for a Java VM, Javascript is the interpreted scripting language used for scripting of HTML where its Windows version JScript is a full featured scripting engine like Python is. I haven't mentioned Java as I know only very little about it, I have mentioned Javascript (JScript) I am much more experienced with. > > In fact Python defines value much more clearly. Value is *obviously* > type dependent. (This is why in Python you can implement your own > comparison methods). > > For integers and floats, Python defines the value to be the numerical > value. > > For strings it defines it to be the contents of the string. > > For mutable objects it defines it to be the contents of the object, if > the object types are the same. i.e. [1] == [1], [1] != (1,) > > For user defined classes, you are able to build your own definition of > value into the object - this doesn't prevent stupidity. > > Python doesn't have a comparison operator analagous to his reference > languages - but IMHO Python is better here. He can achieve what he > wants by subclassing the built in datatypes and overriding the > comparison methods to behave as he desires. You seem here to try to give a definition of the term 'value' for Python. If I understand it right, the definition of the term can't be generally given for many reasons. It depends at least on type and in advanced usage it can be arbitrary defined or changed. That is why I mean, that it makes no sense to talk in Python about value. I see not much sense in taking existing term in order to redefine it for a new context - the result is always increase of confusion. Let give it another name in order to know, that it must be defined for the context it is used before it becomes meaningful. Any suggestions? Claudio -- http://mail.python.org/mailman/listinfo/python-list