Neal Norwitz wrote: > On Sun, Feb 09, 2003 at 10:39:28AM -0500, Guido van Rossum wrote: > > Is anybody at least collecting useful feedback? I'm willing to update > > the PEP to at least mention sensible alternatives or arguments pro and > > con, but I can't read the c.l.py messages. > > I have read most of the posts. It's a bit humorous to watch emotions > get so stirred in both directions. It seems there are many > python-devers following the discussion: Aahz, Andrew Koenig (ARK), > Michael Hudson, Holger Krekel, and Tim have all posted. ARK seems > to be the most pro, Aahz the most against. (I'm +0 on having > a ternary operator in theory, -1 on PEP 308.) > > ARK can do the best job of summarizing the pro-side, but the > strongest arguments I've seen are that using a ternary op can > reduce bugs by not duplicating a variable on assignment: > > if cond: > x = true_value > else: > x = false_value > > vs. (in C notation): > x = cond ? true_value : false_value > > Since x is only mentioned once, you can't get it wrong. Right. OTOH there seems to be the fear (especially from the more experienced folks maintaining large code bases) that the ternary op *will* be used in non-assignments despite often beeing bad style. E.g. starting from if obj.method(): ... and realizing that 'obj' might not have "method" some might write: if obj.method() if hasattr(obj, 'method') else False: ... which many consider a bad thing to be valid. There are a *lot* of variations on this theme (with while/list-comps/lambda) and people have reacted with punctuation (?:), new keywords (when) and any mixture between those. Clearly, you don't need the ternary operator for the above because there is an obvious other solution: if hasattr(obj, 'method') and obj.method(): ... and thus people indicated in various threads that having the ternary op prevents people from getting to better and easier solutions. > Part of the reason for using if-expressions (the ternary op) is the > programmer has a different mindset. They aren't thinking about > control (as in an if statement). They are thinking about an > expression and the ternary operator allows them to program what they > are thinking. Andrew Dalke posted a nice survey on 15 different ternary-op examples in his 42.500 line C-code base (written by different programmers). Although it's not about python code it hits a nerve because quite some people come with a C background (different mindset) and miss the ternary OP: http://mail.python.org/pipermail/python-list/2003-February/145592.html I think this link could be included in the PEP under something like "Often (but not always) there are better Python-solutions than with C regarding ternary OP.". As no single person can follow all the c.l.py postings i think we might "preprocess" and send Guido "important" links together with a short summary (or just the latter) to be included in the PEP. regards, holger
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