[Tutor] is gotchas?
Michael P. Reilly
arcege at gmail.com
Tue Nov 7 03:51:32 CET 2006
On 11/6/06, Tim Johnson <tim at johnsons-web.com> wrote:
> * Kent Johnson <kent37 at tds.net> [061106 10:31]:
> > In : a=[1,2]
> > In : b=[1,2]
> Hmmm! Hmmm!
> Lookee here:
> ## console session
> >>> a=[1,2]
> >>> b=[1,2]
> >>> a is b
> >>> c='1' ## one byte
> >>> d='1' ## one byte
> >>> c is d
> >>> c='1,2'
> >>> d='1,2'
> >>> c is d
> 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
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:
There's so many different worlds,
So many different suns.
And we have just one world,
But we live in different ones.
-------------- next part --------------
An HTML attachment was scrubbed...
More information about the Tutor