[Python-Dev] Adding a conditional expression in Py3.0
Jason Orendorff
jason.orendorff at gmail.com
Wed Sep 21 00:28:46 CEST 2005
On 9/20/05, Guido wrote:
> On 9/20/05, Jason Orendorff <jason.orendorff at gmail.com> wrote:
> > return (if q: q.popleft() else: None)
> > return (if q then q.popleft() else None)
> > return q ? q.popleft() : None
> >
> > Hmmm. Score one for ?:.
>
> Why? Just because it's shorter?
Just a gut response to the look. The verbose forms strike me as
cluttered in this particular case.
In the multiline case, it doesn't look like clutter because the
if/elif/else bits line up, which fits the way Python has already
trained my brain.
> (Oh, and a way to decide between colon or no colon: we're not using
> colons in list comps and genexprs either.)
(grin) Easily fixed:
print "average weight:", avg(for c in chefs: c.weight)
rdict = dict(for k, v in D.iteritems(): v, k)
Honestly, I think I would prefer this syntax. Examples from real
code, before and after:
lines = [line for line in pr.block.body
if line.logical_line.strip() != '']
lines = [for line in pr.block.body:
if line.logical_line.strip() != '':
line]
row.values = \
[line[col.start:col.end].strip() for col in columns]
row.values = \
[for col in columns: line[col.start:col.end].rstrip()]
return [p for p in self.listdir(pattern) if p.isdir()]
return [for p in self.listdir(pattern): if p.isdir(): p]
-j
More information about the Python-Dev
mailing list