easy question on parsing python: "is not None"

Michael Torrie torriem at gmail.com
Mon Aug 9 17:13:04 EDT 2010


On 08/09/2010 06:11 AM, saeed.gnu wrote:
> On Aug 9, 3:41 pm, "saeed.gnu" <saeed.... at gmail.com> wrote:
>> "x is y"          means   "id(y) == id(y)"
>> "x is not y"      means   "id(x) != id(x)"
>> "x is not None"   means   "id(x) != id(None)"
>>
>> "x is not None"  is a really silly statement!! because id(None) and id
>> of any constant object is not predictable! I don't know whay people
>> use "is" instead of "==". you should write "if x!=None" instead of "x
>> is not None"
> 
> Although small objects are unique in the memory (with a unique id) and
> using "is" works ok, but that's not logical to compare id's when we
> actually want to compare values!

Sounds like you're confusing Python's namespace with variables.  When I say:

a = None

I'm binding the None object to the a name.  Thus a *is*
None.  While in theory "None" does have a value, doing "a is None" is
much more explicit and clearer than "a == None" although perhaps the
result is the same.  In any event "a is None" is actually logical
because that's what I'm normally interested in.  Whether or not a is
None.  I don't really care about the value of None.







More information about the Python-list mailing list