Steve Holden wrote: > Claudio Grondi wrote: > [...] > >>> >> Yes, I know about 'is', >> >> but I mean, that it is not possible to use 'is' as replacement for >> '==' operator to achieve in Python same behaviour as it is the case in >> C and Javascript when comparing values with '=='. >> 'is' does the C, Javascript job when comparing lists, but I mean it >> fails to give fully predictable results when applied to elements of >> lists in case there exist duplicate objects with same 'value' i.e. >> e.g. there are two different objects storing the integer value 1, what >> I mean can happen when there is enough other code between the Python >> code lines assigning the integer value 1 to a list element or any >> other identifier. > > > Perhaps you could try again in English? :-) Sorry, that's a very complex > sentence and it isn't clear what yo mean. Here in English ;-) : a=[1] ... many other statements here ... b=[1] a is b # False a == b # True a[0] is b[0] # unpredictable(?) a[0] == b[0] # True
so a C, Javascript equivalent '==' operator (called here e.g. 'xx') should in case of code above _always_ give: a xx b # False a[0] xx b[0] # True what becomes only possible if the object holding the integer value 1 is created only once when a=[1] and reused when executing b=[1]. Claudio > > In C, of course, a == b requires that a and b be of compatible types and > that they have the same value. This means that if they are pointers they > must point to the same thing (which is exactly what "is" tests for). > >> Or is there in Python a 100% reliable mechanism assuring, that there >> is one and _only one_ object carrying a given 'value' (at least for >> the built in types as integer, long integer, string, float) and if >> this value is to be assigned to a list element or any other literal >> the already existing object (if any) will be found and used/referenced? >> > No more than there is in C or, presumably, Java. > > If you want to test for identity, use "is". If you want to test for > equality, use "==". Of you want to test for something else, kindly > explain what you want to test for. > > regards > Steve -- http://mail.python.org/mailman/listinfo/python-list