有没有一种方法告诉我的程序退出?

时间:2010-05-12 23:22:41

标签: python exit quit

对于程序菜单中的“q”(退出)选项,我有以下代码:

elif choice == "q":
    print()

直到我把它放在一个无限循环中,这一直保持打印空白行。有没有可以退出程序的方法?否则,您能想到另一种解决方案吗?

5 个答案:

答案 0 :(得分:77)

一种方法是:

sys.exit(0)

当然,你必须import sys

另一种方法是从你的无限循环中break。例如,您可以这样做:

while True:
    choice = get_input()
    if choice == "a":
        # do something
    elif choice == "q":
        break

另一种方法是将主循环放在函数中,并使用return

def run():
    while True:
        choice = get_input()
        if choice == "a":
            # do something
        elif choice == "q":
            return

if __name__ == "__main__":
    run()

使用run()时需要return函数的唯一原因是(与其他语言不同),您不能直接return来自Python代码的主要部分(部分不在函数内部。)

答案 1 :(得分:17)

结束程序的实际方法是调用

raise SystemExit

这是sys.exit does, anyway

普通SystemExitNone作为单个参数,将进程的退出代码设置为零。任何非整数异常值(raise SystemExit("some message"))都会将异常值打印到sys.stderr并将退出代码设置为1.整数值将进程的退出代码设置为值:

$ python -c "raise SystemExit(4)"; echo $?
4

答案 2 :(得分:10)

在Python 3中有一个exit()函数:

elif choice == "q":
    exit()

答案 3 :(得分:3)

sys.exit。该函数将以给定的退出状态退出程序。

答案 4 :(得分:2)

请注意,基于sys.exit()或任何Exception的解决方案可能无法在多线程环境中运行。

  

由于exit()最终“仅”引发了一个异常,它只会在从主线程调用时退出进程,并且异常不会被截获。 (doc

This answer from Alex Martelli了解详情。