On Fri, 15 Aug 2008 08:03:23 -0700, Carl Banks wrote: > On Aug 14, 4:42 pm, Christian Heimes <[EMAIL PROTECTED]> wrote: >> Integers >> between -5 and +256 are singletons as are some other objects like >> strings with one element or empty tuples. > > Not quite. > > Python 2.5.2 (r252:60911, May 28 2008, 08:35:32) [GCC 4.2.4 (Debian > 4.2.4-1)] on linux2 Type "help", "copyright", "credits" or "license" for > more information. >>>> a = 'A' >>>> b = "%c" % a >>>> a > 'A' >>>> b > 'A' >>>> a is b > False
Wow... wow wow. How very odd. That is one exception I did not expect, especially considering that string-formatting with a *literal* rather than a variable gives the opposite result. >>>> a = 'A' >>>> b = "%c" % 'A' >>>> a > 'A' >>>> b > 'A' >>>> a is b > True >> You must not rely on the >> optimization. > > Good advice. Indeed! Corner cases like the above will bit you in the ass ;-) Simple rule of thumb: use "is" when you really truly want to check if two symbols refer to the same object in memory. If that's not what you *really* want to do, then don't use it! Dan -- http://mail.python.org/mailman/listinfo/python-list