> The reason I like "a if b else c" is because it has the > most natural word order. In English, > My dog is happy if he has a bone, else sad. > sounds much more natural than > My dog is, if he has a bone, happy, else sad.
Neither sounds very natural to me; conditional expressions don't occur much in English. It's much more common to hear something like My dog is happy if he has a bone; otherwise he's sad. And that would correspond to a postfix conditional operator on *statements*, not expressions; Perl and Ruby have this, but it doesn't seem very Pythonic. > Interestingly, it looks *more* odd to me if parens are > included: > > return (self.arg if self.arg is not None else default) > > I think this is because, without the parens, I tend to read > the "if" as applying to the whole phrase "return self.arg", > not just to the "self.arg". Which is one reason why I *don't* like the proposed "consequent if antecedent else alternative" syntax; it looks like a statement modifier when it isn't really one. When you're forced (by the parens) to read it correctly, you stop liking it! :-) * Conditional expressions do occur in English, though, and they do generally have the consequent at the front. But ... they also generally have the "else-marker" right at the end. "Buy some pork if it's going cheap, and some beef if not." "You can divide an angle into N equal parts with ruler and compasses if N is a power of 2 times a product of distinct Fermat primes, but not if N has any other form." "I sleep all night and work all day." I don't think a syntax that authentically mirrors the structure of conditional expressions in English is likely to be very good. x = (123 if p==q; 321 otherwise) x = (123 if p==q, else 321 if not) x = (123 if p==q; else 321 if r==s; else 999 if not) :-) -- g _______________________________________________ Python-Dev mailing list Python-Dev@python.org http://mail.python.org/mailman/listinfo/python-dev Unsubscribe: http://mail.python.org/mailman/options/python-dev/archive%40mail-archive.com