On Fri, 06 Aug 2010 17:20:30 +0000, Peter Pearson wrote: > On Fri, 06 Aug 2010 15:37:04 +0200, Stefan Schwarzer wrote: [snip] >> I can imagine a case where you might want to compare a string with >> `is`: >> >> FORWARD = "forward" >> BACKWARD = "backward" [...] >> Actually, I've never seen such a use, as far as I remember. What do >> other people here think? Is the code above, which compares strings with >> `is`, bad style, and if yes, why? How would you write the code instead? > > Hey, that's a cute example, but . . . what a trap! Is it possible to > document the use-the-object-not-the-string requirement loudly enough > that people won't get caught?
Nope. People don't read documentation :) That's why I prefer to test for human-readable constants using equality, so if the caller prefers to call func(x, "forward") instead of func(x, FORWARD) it will still work. Or I use FOWARD = object() BACKWARDS = object() and force them to use my constants. -- Steven -- http://mail.python.org/mailman/listinfo/python-list