* Kent Johnson <[EMAIL PROTECTED]> [061106 10:31]:
>
> In [9]: a=[1,2]
>
> In [10]: b=[1,2]
Hmmm! Hmmm!
Lookee here:
## console session
>>> a=[1,2]
>>> b=[1,2]
>>> a is b
False
>>> c='1' ## one byte
>>> d='1' ## one byte
>>> c is d
True
>>> c='1,2'
>>> d='1,2'
>>> c is d
False
The Hmmm! is emmitted because I'm thinking that if everything is an
object in python, then why does `c is d` evaluate to True when
the assigned value is 1 byte and evaluate to False when the assigned
value is more that 1 byte?
I think I ran into this before and that's why I never used `is'.
You might want to try:
>>> a = 'a'
>>> b = 'a'
>>> a is b
True
Why? Interned strings. As Pujo aluded to, various simple or well-used objects (like the digits between 0 and 100), and strings that have been interned with the intern() function.
There is a unique item: None. There is only one object of type NoneType. No matter how many times you reference it, it will always be the same object. So it is a perfect use of "is":
def f(arg1, arg2, optarg=None):
if optarg is None:
-Arcege
--
There's so many different worlds,
So many different suns.
And we have just one world,
But we live in different ones.
_______________________________________________ Tutor maillist - Tutor@python.org http://mail.python.org/mailman/listinfo/tutor