Interesting behaviour of the assignment
Moshe Zadka
moshez at zadka.site.co.il
Sun Dec 31 10:31:43 EST 2000
More information about the Python-list mailing list
Sun Dec 31 10:31:43 EST 2000
- Previous message (by thread): Interesting behaviour of the assignment
- Next message (by thread): Interesting behaviour of the assignment
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
[Thomas Wouters] > In other words, 'x == y' first does 'x is y', and if it's true, the > result > of the operation is true. Only if 'x is y' is false will it start the > (possibly very expensive) comparison-by-contents operation. [Michael Esveldt] > 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.) [Alex Martelli] > 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 def eat(what): if what is SPAM: eat_spam() if what is EGGS: eat_eggs() raise FoodError() # user code: import foo foo.eat(foo.SPAM) foo.eat(foo.EGGS) 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!
- Previous message (by thread): Interesting behaviour of the assignment
- Next message (by thread): Interesting behaviour of the assignment
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
More information about the Python-list mailing list