On 11/6/06, Tim Johnson <[EMAIL PROTECTED]> wrote:
* 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

Reply via email to