Carl Banks wrote: > On Mar 8, 5:32 am, Lie Ryan <lie.1...@gmail.com> wrote: >> Mel wrote: >>> wrote: >>>> Steven D'Aprano <st...@pearwood.info> writes: >>>>> It is never >>>>> correct to avoid using "is" when you need to compare for identity. >>>> When is it ever necessary to compare for identity? >>> Ho-hum. MUDD game. >>> def broadcast (sender, message): >>> for p in all_players: >>> if p is not sender: >>> p.tell (message) # don't send a message to oneself >> Since in a MUD game, a player would always have a unique username, I'd >> rather compare with that. It doesn't rely on some internals. There is >> very, very rare case where 'is' is really, really needed. > > Well, by that criterion you can dismiss almost anything. > > Of course you can assign unique ids to most objects and perform your > identity tests that way. The point is that sometimes you do need to > test for the identity of the object, not merely the equivalent > semantic value. > > If, faced with this problem (and I'm guessing you haven't faced it > much) your approach is always to define a unique id, so that you can > avoid ever having to use the "is" operator, be my guest. As for me, I > do program in the sort of areas where identity testing is common, and > I don't care to define ids just to test for identity alone, so for me > "is" is useful. > Well, the obvious "identity" is id(p), but then
a is b is entirely equivalent to id(a) == id(b) regards Steve -- Steve Holden +1 571 484 6266 +1 800 494 3119 Holden Web LLC http://www.holdenweb.com/ Want to know? Come to PyCon - soon! http://us.pycon.org/ -- http://mail.python.org/mailman/listinfo/python-list