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

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,这让我很困扰。有没有更好的方法来“退出一个没有返回值的函数,如果在函数体中检查失败”?


当前回答

可以使用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])函数可以使用,需要导入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)函数可以用来退出进程,需要导入OS模块。

其他回答

你可以简单地使用

return

这是完全一样的

return None

如果执行到函数体的末尾而没有返回语句,函数也将返回None。在Python中返回None与返回None相同。

可以使用不带任何参数的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...

可以使用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])函数可以使用,需要导入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)函数可以用来退出进程,需要导入OS模块。

我建议:

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