On Mon, 2008-12-15 at 02:11 +0000, Lie Ryan wrote: > On Fri, 12 Dec 2008 22:55:20 +0000, Steven D'Aprano wrote: > > > On Fri, 12 Dec 2008 21:18:36 +0000, Lie Ryan wrote: > >> Personally, I'd prefer VB's version: > >> foo IsNot bar > >> > >> or in pseudo-python > >> foo isnot bar > >> > >> since that would make it less ambiguous. > > > > "a is not b" is no more ambiguous than "1+2*3". True, there's ambiguity > > if you are ignorant of the precedence rules, but that's no worse than > > saying that "+" is ambiguous if you don't know what "+" means. > > > > "What's this 'is' operator??? It's ambiguous, it could mean ANYTHING!!! > > Panic panic panic panic!!!" > > > > *wink* > > > > You're allowed to assume the normal conventions, and (lucky for me!) > > despite being Dutch Guido choose to assume the normal English convention > > that "a is not b" means the same as "not (a is b)" rather than "a is > > (not b)". That's probably because the use-cases for the second would be > > rather rare. > > > > So given the normal precedence rules of Python, there is no ambiguity. > > True, you have to learn the rules, but that's no hardship. > > *I* know about the precedence rule, but a newbie or a tired programmer > might not. He might want to reverse the truth value of argument b but > instead has just reversed the whole expression. Probably in a slightly > convoluted code like this: > > if a is not(b and c): > ... >
A newbie might make that mistake, but a tired programmer would be testing for equality rather than identity in that case, and if she weren't, she'd have to fix her code in the morning anyway. Cheers, Cliff -- http://mail.python.org/mailman/listinfo/python-list