On Wed, 4 Dec 2019 at 21:16, Anders Hovmöller <bo...@killingar.net> wrote:
> > On 4 Dec 2019, at 21:28, Soni L. <fakedme...@gmail.com> wrote:
> >> On 2019-12-04 5:12 p.m., Mike Miller wrote:
> >>
> >>> On 2019-12-04 11:05, David Mertz wrote:
> >>> I've often wanted named loops. I know approaches to this have been 
> >>> proposed many times, and they all have their own warts. E.g. an ad hoc 
> >>> pseudo code that may or may not match any previous proposal:
> >>>
> >>> for x in stuff as outer:
> >>>      for y in other_stuff as inner:
> >>>          ...
> >>>          if cond:
> >>>              break outer
> >>>
> >>> But we all manage without it.
> >>
> >> +1  Nice, find myself with that problem about once a year and it is 
> >> annoying to code around.
> >
> > Just use context managers!
>
> What? How exactly? Can you rewrite the example given?

I guess what is meant is this:

from contextlib import suppress

class Exit(BaseException):
    pass

stuff = [10, 20, 30]
other_stuff = [1, 2, 3]

with suppress(Exit):
    for x in stuff:
        for y in other_stuff:
            print(x, y)
            if x + y > 21:
                raise Exit

You can so the same with try/except:

class Exit(BaseException):
    pass

stuff = [10, 20, 30]
other_stuff = [1, 2, 3]

try:
    for x in stuff:
        for y in other_stuff:
            print(x, y)
            if x + y > 21:
                raise Exit
except Exit:
    pass

I dislike both of the above though. My suggestion would be to use a
function rather than exceptions:

stuff = [10, 20, 30]
other_stuff = [1, 2, 3]

def func():
    for x in stuff:
        for y in other_stuff:
            print(x, y)
            if x + y > 21:
                return

func()

In this example it might seem awkward to introduce a function just for
this but normally in context the function can have a more reasonable
purpose and a good name and return something useful etc.

--
Oscar
_______________________________________________
Python-ideas mailing list -- python-ideas@python.org
To unsubscribe send an email to python-ideas-le...@python.org
https://mail.python.org/mailman3/lists/python-ideas.python.org/
Message archived at 
https://mail.python.org/archives/list/python-ideas@python.org/message/5FMNLSRDHAAP5T2DCUSNH7QGDIK6G2O6/
Code of Conduct: http://python.org/psf/codeofconduct/

Reply via email to