exit 2 levels of if/else and execute common code

Neal Becker ndbecker2 at gmail.com
Mon Feb 11 11:19:24 EST 2019


Chris Angelico wrote:

> On Tue, Feb 12, 2019 at 2:27 AM Neal Becker <ndbecker2 at 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.



More information about the Python-list mailing list