On Thursday 06 February 2003 11:49 am, Guido van Rossum wrote: > > If this is just for fun, why stop with just "trinary"? > > (Which BTW is a non-word; the correct term is "ternary".) > > > How about one of the following (depending on ease of parsing)? > > These look even more like list comprehension. > > > > x = (e1 if c1 e2 if c2 e3 if c3 ... else d) > > Doesn't parse. The concatenation of two expressions is not > always distinguishable from a single expression: consider c1 = f and > c2 = (1, 2). > > > x = (e1 if c1 else e2 if c2 else e3 if c3 ... else d) > > That works. Now that I've had a little more time to thing about it, this suggestion of a n-ary form is nothing more than nested ternary forms with extra parentheses removed: (a1 if c1 else (a2 if c2 else b2)) could be allowed to be written as (a1 if c1 else a2 if c2 else b2) and, if you want: (a1 if c1 else a2 if c2 else b2) Other sub-threads of this thread are discussing how to parse these ternary operators if the parentheses are not required. I think the parentheses *should* be required (see below for why) and so it would be nice to allow this extended form and not require the inner set of parentheses when doing "tail nesting" (to invent a term). BEWARE: UNPYTHONIC UGLINESS FOLLOWS! On the other hand, if the parentheses are NOT required, we get a whole host of *UGLY*, absolutely unreadable, nesting possibilities: a if b else c if d else e <==> (a if b else c) if d else e and even worse a if b if c else d else e <==> a if (b if c else d) else e And what about statements if a if b else c if d else e: f elif g if h if i else j else k: l else: m Of course, any feature can be abused, but this seems *too* abusable. Gary Herron
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4