让我们假设一个迭代,在这个迭代中,我们调用一个没有返回值的函数。我认为我的程序应该如何运行的解释如下伪代码:
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
,这让我很困扰。如果函数体中的检查失败,是否有更好的方法来"退出没有返回值的函数"?
您可以简单地使用
return
其作用与完全相同
return None
如果执行到达函数体的末尾而没有命中return
语句,那么函数也将返回None
。不返回任何内容与在Python中返回None
相同。
我建议:
def foo(element):
do something
if not check: return
do more (because check was succesful)
do much much more...
您可以使用不带任何参数的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...
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
模块