在函数结束之前在python中退出函数(没有返回值)的最佳方法是什么(例如检查失败)?

Auf*_*ind 136 python return function

让我们假设一个迭代,我们在其中调用一个没有返回值的函数.我认为我的程序应该表现的方式在这个伪代码中解释:

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...
Run Code Online (Sandbox Code Playgroud)

如果我在python中实现它,它困扰我,该函数返回一个None.有没有更好的方法来"退出函数,没有返回值,如果函数体中的检查失败"?

Sve*_*ach 235

你可以简单地使用

return
Run Code Online (Sandbox Code Playgroud)

这完全一样

return None
Run Code Online (Sandbox Code Playgroud)

None如果执行到达函数体的末尾而您没有命中return语句,您的函数也将返回.返回任何内容与None在Python中返回相同.

  • @TomSawyer你要求的是[不同问题](/sf/ask/5156441/)的主题!普通的“return”非常适合 _this_ OP 所描述的内容。 (3认同)
  • @TomSawyer 要尽早停止 Python 程序,请先执行 `import sys` 然后执行 [`sys.exit()`](https://docs.python.org/library/sys.html#sys.exit) 如果需要的话退出但报告成功或 `sys.exit("some error message to print to stderr")`。 (2认同)

Hyp*_*eus 16

我会建议:

def foo(element):
    do something
    if not check: return
    do more (because check was succesful)
    do much much more...
Run Code Online (Sandbox Code Playgroud)


Sap*_*das 12

  1. return Nonereturn可用于退出函数或程序,两者都做同样的事情
  2. quit()可以使用该函数,但不鼓励在实际应用程序中使用该函数,并且只能在解释器中使用。
    import site
    
    def func():
        print("Hi")
        quit()
        print("Bye")
Run Code Online (Sandbox Code Playgroud)
  1. exit()可以使用类似于quit()但不鼓励在实际应用程序中使用的函数。
import site
    
    def func():
        print("Hi")
        exit()
        print("Bye")
Run Code Online (Sandbox Code Playgroud)
  1. sys.exit([arg])函数可以使用并且需要import sys为此进行模块,与其他两个函数不同,该函数可以用于现实世界的应用程序。
import sys 
  height = 150
  
if height < 165: # in cm 
      
    # exits the program 
    sys.exit("Height less than 165")     
else: 
    print("You ride the rollercoaster.") 
Run Code Online (Sandbox Code Playgroud)
  1. os._exit(n)函数可用于退出进程,并且需要import os为此进行模块。


Céd*_*ien 11

您可以使用return不带任何参数的语句来退出函数

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

如果您想知道问题,请提出异常

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...
Run Code Online (Sandbox Code Playgroud)