Python退出命令:quit()、exit()、sys.exit() 和 os._exit()
函数quit()
、 exit()
、 sys.exit()
和os._exit()
具有几乎相同的功能,因为它们引发了Python解释器退出且不打印堆栈回溯的SystemExit
异常。
我们可以捕获异常来拦截提前退出并执行清理活动;如果未被捕获,解释器将照常退出。
当我们在Python中运行程序时,我们只需执行文件中的所有代码,从上到下。当解释器到达文件末尾时脚本通常会退出,但我们也可以使用内置的退出函数调用程序显式退出。
- 辞职()
它仅在站点模块被导入时才有效,因此不应在生产代码中使用。生产代码是指代码被目标受众在现实世界中使用。这个函数应该只在解释器中使用。
它在幕后引发了 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
- 出口()
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
- 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
- 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() 仅在需要立即退出时用于特殊情况。