Another conditional expression candidate (PEP 308)
Evan
evan at 4-am.com
Mon Feb 10 09:08:49 EST 2003
More information about the Python-list mailing list
Mon Feb 10 09:08:49 EST 2003
- Previous message (by thread): Another conditional expression candidate (PEP 308)
- Next message (by thread): Another conditional expression candidate (PEP 308)
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
Andrew Koenig wrote: > I don't see any reason for the parens to be mandatory. It eliminates the Corner Case, precedence issues, and Alan Daniels objection elsewhere in this thread. > In particular, I don't see any reason why I should not be > able to write > > foo(if a > 0: 'positive' elif a == 0: 'zero' else: 'negative') Now add an operator to the right end of the expression. Sure, it is possible to set up precedence so that it usually "does the right thing", but an inexperienced programmer, or one who simply prefers not to use conditional expressions in their own code, will have to stop and think when they read in someone else's code: foo(if a > 0: 'positive' elif a == 0: 'zero' else: 'negative', 1) Is that a tuple or a pair of arguments? On the other hand, foo((if a > 0: 'positive' elif a == 0: 'zero' else: 'negative'), 1) See? Also, parse this for me (assuming that those who also want else: to be optional win): x = if c1: e1 elif c2: if c3: e3 else: e4 Now parse this: x = (if c1: e1 elif c2: (if c3: e3) else: e4) My point is that if Guido is going to agree to add this controversial new feature to Python, the result should be absolutely no-thought-required readable and consistent. Nothing optional, apart from the inherent n-way optionality of the elif: clauses. No precedence questions. No Corner Case. Dead simple. Cheers, Evan @ 4-am
- Previous message (by thread): Another conditional expression candidate (PEP 308)
- Next message (by thread): Another conditional expression candidate (PEP 308)
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
More information about the Python-list mailing list