在函数结束(例如检查失败)之前在 python 中退出函数(没有返回值)的最佳方法是啥?
Posted
技术标签:
【中文标题】在函数结束(例如检查失败)之前在 python 中退出函数(没有返回值)的最佳方法是啥?【英文标题】: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)?在函数结束(例如检查失败)之前在 python 中退出函数(没有返回值)的最佳方法是什么? 【发布时间】:2011-09-05 15:42:45 【问题描述】:让我们假设一个迭代,我们调用一个没有返回值的函数。这个伪代码解释了我认为我的程序应该表现的方式:
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...
如果我在 python 中实现它,我会感到困扰,该函数返回一个None
。有没有更好的方法来“退出一个没有返回值的函数,如果函数体中的检查失败”?
【问题讨论】:
如果你没有明确地返回一些东西,Python 总是返回 None 。但是您可以将“无”关闭。 根据检查的内容,您还可能raise
一个异常(或者,很少使函数返回 True/False)
【参考方案1】:
return None
或 return
可用于退出函数或程序,两者的作用相同
可以使用quit()
函数,但不鼓励在实际应用中使用此函数,并且只能在解释器中使用。
import site
def func():
print("Hi")
quit()
print("Bye")
-
可以使用
exit()
函数,类似于quit()
,但不鼓励在实际应用中使用。
import site
def func():
print("Hi")
exit()
print("Bye")
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.")
os._exit(n)
函数可用于退出进程,需要import os
模块。
【讨论】:
【参考方案2】:我建议:
def foo(element):
do something
if not check: return
do more (because check was succesful)
do much much more...
【讨论】:
【参考方案3】:您可以使用不带任何参数的return
语句退出函数
def foo(element):
do something
if check is true:
do more (because check was succesful)
else:
return
do much much more...
如果您想了解问题,请引发异常
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...
【讨论】:
【参考方案4】:你可以简单地使用
return
和
完全一样return None
如果执行到达函数体的末尾而没有遇到return
语句,您的函数也将返回None
。不返回任何内容与在 Python 中返回 None
相同。
【讨论】:
return
不起作用,如果我设置 a = method()
,在我使用 return
的方法内部,它仍然会继续运行代码。 exit 应该像 php exit() 一样,它会立即中断程序。
@TomSawyer 提前停止 Python 程序,如果要退出但报告成功,请先执行 import sys
,然后执行 sys.exit()
或 sys.exit("some error message to print to stderr")
。
@Boris,这就是我要找的东西,这对我有用。
@TomSawyer 您要求的是different question 的主题!普通的return
非常适合this OP 描述的内容。以上是关于在函数结束(例如检查失败)之前在 python 中退出函数(没有返回值)的最佳方法是啥?的主要内容,如果未能解决你的问题,请参考以下文章