I'm trying to sort out whether this is just a personal preference thing or whether it's actually bad practice to do this one way or another. I did try to reference PEP8 first, and I did not see an answer.
What I'm talking about here is the use of more than one return
statement. In these examples, it's not such a big deal, as they are very short and easily read.
def foo(obj):
if obj.condition:
return True
return False
def bar(obj):
answer = False
if obj.condition:
answer = True
return answer
It bugs me to assign a variable every time bar()
is called, instead of just determining the answer and returning it. But in a longer function a second return
might be hidden and so someone reading the code may have not realized that the function might return a value before hitting the end of the line:
def spam(obj):
blurb = "Francis"
if obj.condition:
blurb = map(gormf, [z for z in porp(obj)])
return blurb[2]
elif not obj.condition and dreg(obj.jek):
blurb = obj.hats * 17
if blurb % 13: return blurb
else:
blurb = obj.name
return "Whales and %s" blurb
That's a terrible function, but I think you see what I'm poking at.
So is it preferable to create a function to have a single, clear exit - even if it's a few more operations than you actually need? Or should one try to root this out whenever possible in favor of shorter code?