[Python-ideas] BUG in standard while statement
Chris Barker
chris.barker at noaa.gov
Fri Sep 11 01:05:43 CEST 2015
On Thu, Sep 10, 2015 at 3:12 PM, MRAB <python at mrabarnett.plus.com> wrote:
> You could use a generator expression with a function that discards the
> results:
>
> def every(iterable):
> for _ in iterable:
> pass
>
> every(obj.a_method() for obj in a_sequence)
>
sure -- though this adds a new function that people reading my code need to
grok.
Andrew Barnert wrote:
> > [obj.a_method() for obj in a_sequence]
I think this is an anti-pattern. The point of a comprehension is that it's
> an expression, which gathers up results. You're trying to hide side effects
> inside an expression, which is a bad thing to do, and lamenting the fact
> that you get a useless value back, which of course you do because
> expressions have values, so that should be a sign that you don't actually
> want an expression here.
Exactly -- I don't want a comprehension, I don't want a expression, I want
a concise way to spell : do this thing to all of these things....
Also, compare the actual brevity here:
> [obj.a_method() for obj in a_sequence]
> for obj in a_sequence: obj.a_method()
> You've replaced a colon with a pair of brackets, so it's actually less
> concise.
Fair enough -- removing a newline does make that pretty simple looking!
I guess I got all comprehension-happy there -- back when it was the shiny
new toy, and then I got stuck on it.
-CHB
--
Christopher Barker, Ph.D.
Oceanographer
Emergency Response Division
NOAA/NOS/OR&R (206) 526-6959 voice
7600 Sand Point Way NE (206) 526-6329 fax
Seattle, WA 98115 (206) 526-6317 main reception
Chris.Barker at noaa.gov
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/python-ideas/attachments/20150910/6933744c/attachment.html>
More information about the Python-ideas
mailing list