On Tue, Feb 12, 2019 at 3:21 AM Neal Becker <ndbeck...@gmail.com> wrote: > > Chris Angelico wrote: > > > On Tue, Feb 12, 2019 at 2:27 AM Neal Becker <ndbeck...@gmail.com> wrote: > >> > >> I have code with structure: > >> ``` > >> if cond1: > >> [some code] > >> if cond2: #where cond2 depends on the above [some code] > >> [ more code] > >> > >> else: > >> [ do xxyy ] > >> else: > >> [ do the same xxyy as above ] > >> ``` > >> > >> So what's the best style to handle this? As coded, it violates DRY. > >> Try/except could be used with a custom exception, but that seems a bit > >> heavy > >> handed. Suggestions? > > > > One common way to do this is to toss a "return" after the cond2 block. > > Means this has to be the end of a function, but that's usually not > > hard. Or, as Rhodri suggested, refactor xxyy into a function, which > > you then call twice. > > > > ChrisA > > Not bad, but turns out it would be the same return statement for both the > normal return path (cond1 and cond2 satisfied) as well as the abnormal > return, so not really much of an improvement.
Not sure what you mean there. The result would be something like this: def frobnicate(): if cond1: do_stuff() if cond2: do_more_stuff() return do_other_stuff() ChrisA -- https://mail.python.org/mailman/listinfo/python-list