Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > comp.lang.python > #91821

for...else

Date 2015-06-02 13:26 +0200
Subject for...else
From acdr <mail.acdr@gmail.com>
Newsgroups comp.lang.python
Message-ID <mailman.52.1433244404.13271.python-list@python.org> (permalink)

Show all headers | View raw


Hi,

Currently, in various places in my code, I have the equivalent of:

for x in it:
    if complicated_calculation_1():
        cleanup()
        break
    complicated_calculation_2()
    if complicated_calculation_3():
        cleanup()
        break

Obviously, I'm repeating myself by having two separate calls to
cleanup(). I can't really see a nicer way to do this. (Though I see
plenty of non-nice ways to do this, such as adding "broken = True" in
front of every "break", and then after the loop is done, have an "if
broken" section.) Other solutions that I'm not particularly fond of
can be found on stackexchange, where someone else is trying to do the
same thing:
http://stackoverflow.com/questions/3296044/opposite-of-python-for-else

I'm wondering if there is a demand for expanding the "for...else"
functionality to be expanded also have a block of code that only gets
called if the loop is broken out of. I.e.:

for x in it:
    ...
then:
    # "break" was called
    ...
else:
    # "break was not called
    ...

Back to comp.lang.python | Previous | NextNext in thread | Find similar | Unroll thread


Thread

for...else acdr <mail.acdr@gmail.com> - 2015-06-02 13:26 +0200
  Re: for...else Rustom Mody <rustompmody@gmail.com> - 2015-06-03 07:40 -0700
    Re: for...else Laura Creighton <lac@openend.se> - 2015-06-03 18:57 +0200

csiph-web