On Wed, 4 Dec 2019 at 21:16, Anders Hovmöller
On 4 Dec 2019, at 21:28, Soni L.
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