📜  Python退出命令:quit()、exit()、sys.exit() 和 os._exit()

📅  最后修改于: 2022-05-13 01:55:34.347000             🧑  作者: Mango

Python退出命令:quit()、exit()、sys.exit() 和 os._exit()

函数quit()exit()sys.exit()os._exit()具有几乎相同的功能,因为它们引发了Python解释器退出且不打印堆栈回溯的SystemExit异常。
我们可以捕获异常来拦截提前退出并执行清理活动;如果未被捕获,解释器将照常退出。

当我们在Python中运行程序时,我们只需执行文件中的所有代码,从上到下。当解释器到达文件末尾时脚本通常会退出,但我们也可以使用内置的退出函数调用程序显式退出。

  1. 辞职()

    它仅在站点模块被导入时才有效,因此不应在生产代码中使用。生产代码是指代码被目标受众在现实世界中使用。这个函数应该只在解释器中使用。

    它在幕后引发了 SystemExit 异常。如果你打印它,它会给出一条消息:

    例子:

    # Python program to demonstrate
    # quit()
      
    for i in range(10):
          
        # If the value of i becomes 
        # 5 then the program is forced
        # to quit
        if i == 5:
              
            # prints the quit message
            print(quit)
            quit()
        print(i)
    

    输出:

    0
    1
    2
    3
    4
    Use quit() or Ctrl-D (i.e. EOF) to exit
    
  2. 出口()

    exit()site.py中定义,它仅在站点模块被导入时才有效,因此它只能在解释器中使用。它就像quit()的同义词,使Python更加用户友好。打印时它也会给出一条消息:

    例子:

    # Python program to demonstrate
    # exit()
      
    for i in range(10):
          
        # If the value of i becomes 
        # 5 then the program is forced
        # to exit
        if i == 5:
              
            # prints the exit message
            print(exit)
            exit()
        print(i)
    

    输出:

    0
    1
    2
    3
    4
    Use exit() or Ctrl-D (i.e. EOF) to exit
    
  3. sys.exit([arg])

    quit()exit()不同, sys.exit()被认为可以很好地用于生产代码,因为 sys 模块始终可用。可选参数arg可以是一个整数,给出出口或其他类型的对象。如果是整数,则零被认为是“成功终止”。

    注意:字符串也可以传递给 sys.exit() 方法。

    示例 –如果年龄小于 18 岁则停止执行的程序。

    # Python program to demonstrate
    # sys.exit()
      
      
    import sys
      
      
    age = 17
      
      
    if age < 18:
          
        # exits the program
        sys.exit("Age less than 18")    
    else:
        print("Age is not less than 18")
    

    输出:

    An exception has occurred, use %tb to see the full traceback.
    
    SystemExit: Age less than 18
    
  4. os._exit(n)

    Python中的os._exit()方法用于以指定状态退出进程,而无需调用清理处理程序、刷新 stdio 缓冲区等。

    注意:该方法通常在os.fork()系统调用后的子进程中使用。退出进程的标准方法是sys.exit(n)方法。

    # Python program to explain os._exit() method  
        
    # importing os module   
    import os 
        
    # Create a child process 
    # using os.fork() method  
    pid = os.fork() 
        
        
    # pid greater than 0 
    # indicates the parent process  
    if pid > 0: 
        
        print("\nIn parent process") 
        # Wait for the completion  
        # of child process and     
        # get its pid and  
        # exit status indication using 
        # os.wait() method 
        info = os.waitpid(pid, 0) 
        
            
        # os.waitpid() method returns a tuple 
        # first attribute represents child's pid 
        # while second one represents 
        # exit status indication 
        
        # Get the Exit code  
        # used by the child process 
        # in os._exit() method 
            
        # firstly check if 
        # os.WIFEXITED() is True or not 
        if os.WIFEXITED(info[1]) : 
            code = os.WEXITSTATUS(info[1]) 
            print("Child's exit code:", code) 
        
    else : 
        print("In child process") 
        print("Process ID:", os.getpid()) 
        print("Hello ! Geeks") 
        print("Child exiting..") 
            
        # Exit with status os.EX_OK 
        # using os._exit() method 
        # The value of os.EX_OK is 0         
        os._exit(os.EX_OK)
    

    输出:

    In child process
    Process ID: 25491
    Hello ! Geeks
    Child exiting..
    
    In parent process
    Child's exit code: 0
    

在上述四个退出函数中,sys.exit() 是首选,因为exit() 和quit() 函数不能在生产代码中使用,而os._exit() 仅在需要立即退出时用于特殊情况。