"/a" is not "/a" ?

Steven D'Aprano steve at pearwood.info
Fri Mar 6 16:12:39 EST 2009


Gary Herron wrote:

> Robert Kern wrote:
...
>> Use "is" when you really need to compare by object identity and not
>> value.
> 
> But that definition is the *source* of the trouble.  It is *completely*
> meaningless to newbies.   Until one has experience in programming in
> general and experience in Python in particular, the difference between
> "object identity" and "value" is a mystery.

Then teach them the difference, rather than give them bogus advice.


> So in order to lead newbies away from this *very* common trap they often
> fall into, it is still a valid rule to say
> 
>     Newbies: Never use "is" to compare immutable types.

Look in the standard library, and you will see dozens of cases of
first-quality code breaking your "valid" rule.

Your rule is not valid. A better rule might be:

Never use "is" to compare equality.

Or even:

Never use "is" unless you know the difference between identity and equality.

Or even:

Only use "is" on Tuesdays.

At least that last rule is occasionally right (in the same way a stopped
clock is right twice a day), while your rule is *always* wrong. It is never
correct to avoid using "is" when you need to compare for identity.

> of even better
> 
>     Newbies: Never use "is" to compare anything.

Worse and worse! Now you're actively teaching newbies to write buggy code!


-- 
Steven




More information about the Python-list mailing list