[Tutor] multiple function returns

Steven D'Aprano steve at pearwood.info
Fri Jun 28 13:19:53 CEST 2013


On 28/06/13 14:18, Jim Mooney wrote:
> What's the Pythonic standard on multiple returns from a function? It
> seems easiest to just return from the point where the function fails
> or succeeds, even it that's multiple points. Or is it considered best
> to defer everything to one return at the end?


The first. Python functions have one entry point, the top of the function. They can have multiple exit points, anywhere you have a return statement.

Languages like Pascal enforce a single exit point, which means you end up writing rubbish code like this:

# Using Python syntax instead of Pascal
def function(arg):
     done = False
     result = some_calculation(arg)
     if condition():
         done = True
     if not done:
         result = more_calculations()
     if condition():
         done = True
     if not done:
         result = even_more_calculations()
     if condition():
         done = True
     if not done:
         result = are_we_done_yet()
     return result


compared to:

def function(arg):
     result = some_calculation(arg)
     if condition():
         return result
     result = more_calculations()
     if condition():
         return result
     result = even_more_calculations()
     if condition():
         return result
     return are_we_done_yet()




-- 
Steven


More information about the Tutor mailing list