ChatGPT解决这个技术问题 Extra ChatGPT

What is the best way to exit a function (which has no return value) in python before the function ends (e.g. a check fails)?

Let's assume an iteration in which we call a function without a return value. The way I think my program should behave is explained in this pseudocode:

for element in some_list:
    foo(element)

def foo(element):
    do something
    if check is true:
        do more (because check was succesful)
    else:
        return None
    do much much more...

If I implement this in python, it bothers me, that the function returns a None. Is there a better way for "exiting a function, that has no return value, if a check fails in the body of the function"?

Python always returns None if you don't explicitly return something. But you can leave the None off.
Depending on what the check is, you might also raise an exception (or, very rarely, make the function return True/False)

S
Sven Marnach

You could simply use

return

which does exactly the same as

return None

Your function will also return None if execution reaches the end of the function body without hitting a return statement. Returning nothing is the same as returning None in Python.


return doesn't work, if i set a = method() , inside method i use return, it still keep running code behind a. exit should be like php exit(), it breaks the program instantly.
@TomSawyer to stop a Python program early, do import sys first and then sys.exit() if you want to exit but report success or sys.exit("some error message to print to stderr").
@Boris, this is what I was looking for and this worked for me.
@TomSawyer what you ask for is the topic of a different question! Ordinary return works perfectly well for what this OP described.
H
Hyperboreus

I would suggest:

def foo(element):
    do something
    if not check: return
    do more (because check was succesful)
    do much much more...

C
Cédric Julien

you can use the return statement without any parameter to exit a function

def foo(element):
    do something
    if check is true:
        do more (because check was succesful)
    else:
        return
    do much much more...

or raise an exception if you want to be informed of the problem

def foo(element):
    do something
    if check is true:
        do more (because check was succesful)
    else:
        raise Exception("cause of the problem")
    do much much more...

S
Saptarshi das

return None or return can be used to exit out of a function or program, both does the same thing quit() function can be used, although use of this function is discouraged for making real world applications and should be used only in interpreter.

    import site
    
    def func():
        print("Hi")
        quit()
        print("Bye")

exit() function can be used, similar to quit() but the use is discouraged for making real world applications.

import site
    
    def func():
        print("Hi")
        exit()
        print("Bye")

sys.exit([arg]) function can be used and need to import sys module for that, this function can be used for real world applications unlike the other two functions.

import sys 
  height = 150
  
if height < 165: # in cm 
      
    # exits the program 
    sys.exit("Height less than 165")     
else: 
    print("You ride the rollercoaster.") 

os._exit(n) function can be used to exit from a process, and need to import os module for that.