Python Forum
Multiple "return" statements or "result" variable?
Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
Multiple "return" statements or "result" variable?
#1
I've been wondering about the best option between multiple return statements and the use of an intermediary result variable. This of course in the case of conditional blocks within a function.

I remember that in the little C I took they were passionate about only ever using one single return statement at the end of your function, but in Python I've seen some code with multiple returns.

Is there a convention that states which choice is cleverer in Python? Or some maintenance/readability concern?

For my fellow beginners, here are concrete examples of what I'm talking about (I know this function is too short and not enough detailed to be worth anything, just trying to illustrate my question):

multiple returns
def even_or_not(number):
    """
    boolean type function, returns T if number given in arg is even, F otherwise
    """
    if number % 2 == 0:
        print("Even")
        return True
    else:
        print("Odd")
        return False
use of result variable
def even_or_not(number):
    """
    boolean type function, returns T if number given in arg is even, F otherwise
    """
    if number % 2 == 0:
        print("Even")
        result = True
    else:
        print("Odd")
        result = False
    return result
Reply
#2
I think having one return is better, as I think it's clearer. However, sometimes when it's an easy way to short circuit further processing, I am weak and I used a mid-function return.
Craig "Ichabod" O'Brien - xenomind.com
I wish you happiness.
Recommended Tutorials: BBCode, functions, classes, text adventures
Reply
#3
check the inks in this @ljmetzger's post (especially the last one from stackexchange). In this last link there is also link to SO question

it looks like the general consensus is this rule (SESE) does not apply to modern languages. the decision one way or the other would take in consideration other factors like readability, etc.

personally I use multiple return statements
If you can't explain it to a six year old, you don't understand it yourself, Albert Einstein
How to Ask Questions The Smart Way: link and another link
Create MCV example
Debug small programs

Reply
#4
Allright, I'm not the only one wondering why. After reading that and this part I still have somehow mixed feelings about it.
To think that a field as allegedly "modern" as programming would desperately stick to ancient no-longer-useful ways is surprising.
Reply
#5
In this case can also remove else.
def even_or_not(number):
    if number % 2 == 0:
        return True
    return False
Reply
#6
(Jul-24-2018, 02:06 PM)snippsat Wrote: In this case can also remove else.
def even_or_not(number): if number % 2 == 0: return True return False
or even
def is_even(number):
    return not number % 2
If you can't explain it to a six year old, you don't understand it yourself, Albert Einstein
How to Ask Questions The Smart Way: link and another link
Create MCV example
Debug small programs

Reply
#7
Okay, maybe I shouldn't have put the example since it seems its confusing. I just wanted to illustrate what I was saying, never said this bit of code was correct, I actually stated I knew it was not good. Just wanted to show what I was wondering about. Maybe shouldn't have, bad example.
Reply
#8
If true pythonista is in doubt he/she will turn to holy book of The Python Language Reference for truth, guidance and salvation. As per documentation, every devoted follower keeps it under pillow Smile .

In this case I was not able to find truth. However, guidance is quite clear: every code snippet that I have encountered so far is using multiple returns. Like in Built-in functions all(), any() or Built-in Types hashing float etc.

The smart people who wrote these snippets were well aware that millions on eager young pythonistas will consider these examples as best practices for Python code.

Conclusion is simple: using multiple returns is pythonic

One can be tempted to derive from that: using multiple results and one return is non-pythonic. I am not commited to that yet. In order to claim that I need to read all snippets provided and only after that make conclusion.
I'm not 'in'-sane. Indeed, I am so far 'out' of sane that you appear a tiny blip on the distant coast of sanity. Bucky Katt, Get Fuzzy

Da Bishop: There's a dead bishop on the landing. I don't know who keeps bringing them in here. ....but society is to blame.
Reply


Possibly Related Threads…
Thread Author Replies Views Last Post
  This result object does not return rows. It has been closed automatically dawid294 6 1,038 Mar-30-2024, 03:08 AM
Last Post: NolaCuriel
  Multiple variable inputs when only one is called for ChrisDall 2 491 Oct-20-2023, 07:43 PM
Last Post: deanhystad
  Multiple Loop Statements in a Variable Dexty 1 1,204 May-23-2022, 08:53 AM
Last Post: bowlofred
  how do I return Max Test result + corresponding student name from an excel dataset? sean1 3 1,260 Jan-16-2022, 09:07 PM
Last Post: snippsat
  Function - Return multiple values tester_V 10 4,445 Jun-02-2021, 05:34 AM
Last Post: tester_V
  Multiple Or Statements JoeDainton123 8 2,617 Sep-15-2020, 08:14 PM
Last Post: buran
  Function will not return variable that I think is defined Oldman45 6 3,514 Aug-18-2020, 08:50 PM
Last Post: deanhystad
  Decorators and return statements JonEdward 2 1,891 Jul-24-2020, 05:02 PM
Last Post: JonEdward
  Help creating a variable as a result Realen 2 1,772 Jun-18-2020, 04:46 AM
Last Post: Realen
  How to pass multiple values from one sample to nc variable? Baloch 0 1,866 Jun-01-2020, 09:27 PM
Last Post: Baloch

Forum Jump:

User Panel Messages

Announcements
Announcement #1 8/1/2020
Announcement #2 8/2/2020
Announcement #3 8/6/2020