These are all a little bit ugly IMO. I've never written the
contextlib.suppress style, but I have the others. Usually what I'll
actually do is:
for x in stuff:
break_outer = False
for y in other_stuff:
do_whatever(x, y)
if cond:
break_outer = True
break
if break_outer: break
I think this is also ugly noise, but it feels like less of a cognitive load
than Oscar's approaches.
On Wed, Dec 4, 2019 at 5:56 PM Oscar Benjamin
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
On Wed, 4 Dec 2019 at 21:16, Anders Hovmöller
wrote: 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-leave@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/5FMNLS... Code of Conduct: http://python.org/psf/codeofconduct/
-- Keeping medicines from the bloodstreams of the sick; food from the bellies of the hungry; books from the hands of the uneducated; technology from the underdeveloped; and putting advocates of freedom in prisons. Intellectual property is to the 21st century what the slave trade was to the 16th.