Interesting behaviour of the assignment
moshez at zadka.site.co.il
Sun Dec 31 16:31:43 CET 2000
> In other words, 'x == y' first does 'x is y', and if it's true, the
> of the operation is true. Only if 'x is y' is false will it start the
> (possibly very expensive) comparison-by-contents operation.
> This is a somewhat ignorant question, but if 'x == y' checks for 'x is
> y' first, why use 'is' at all? If you only get a tiny bit of speed out
> of using 'is' is it worth it to have this in the language at all? (Not
> that it would ever change, just curious.)
> Moshe gave an example: *defeating* polymorphism attempts on
> the part of object implementers, based on their implementing
> __cmp__. Why one would actively work to impede polymorphism,
> I don't know, but it sure can work that way.
Here's an example where I'd rather use "is" then "==":
# module foo.py
SPAM = 0
EGGS = 1
if what is SPAM:
if what is EGGS:
# user code:
The semantics are accurate here: foo.eat should not be passed 0.0,
it should be passed only foo.SPAM or foo.EGGS, so a FoodError
will alert the programmer to his bug sooner.
Moshe Zadka <sig at zadka.site.co.il>
This is a signature anti-virus.
Please stop the spread of signature viruses!
More information about the Python-list