终止Python程序

6 python

您在python中使用什么命令来终止程序?

即基本的"结束",或BASH中的"退出".

我看到"休息"会把你带出一个循环,而"退出"就会被我所不理解的"阶级"东西所束缚.我试过了

import sys
sys.exit()
Run Code Online (Sandbox Code Playgroud)

但它会显示以下错误:

Traceback (most recent call last):
  File "C:\Documents and Settings\....\Desktop\current file_hand\Python_1.py", line 131, in <module>
    sys.exit()
SystemExit
Run Code Online (Sandbox Code Playgroud)

它有什么解决方案吗?

nos*_*klo 12

sys.exit()引发SystemExit例外.

如果您没有捕获该异常,则程序结束.

既然你得到了那个输出,我不确定发生了什么,但我猜你正在捕捉所有异常并自己打印:

try:
    ...
except:
    print exception somehow
    raise
Run Code Online (Sandbox Code Playgroud)

如果是这种情况,请不要这样做.赶上Exception来代替:

...
    except Exception:
        ...
Run Code Online (Sandbox Code Playgroud)

这样你就不会捕捉到不想捕获的东西(比如SystemExit).


Chr*_*ver 11

sys.exit(错误代码)

由于某种错误,例如用户输入了错误的参数,Error_code对于正常退出将为0,对于退出为1或其他正数.

sys.exit()"在某些体系结构上未定义",(虽然它在我的Linux机器上试用时有效!)

官方python文档这更充分说明.

所有程序和脚本遵循返回约定是一个非常好的主意.

例如,如果您运行一个从数据库中获取某些数据的脚本; 返回0并且没有输出,意味着数据库完全正常,其中没有任何内容(或者没有与您的查询匹配).返回1并且没有输出意味着数据库存在故障,整个过程应该中止,因为继续会破坏其他系统.


kru*_*ubo 8

您还应该考虑直接退出的替代方案.return如果将代码包装在函数中,通常也可以正常工作.(事实上​​,更好,因为它避免了sys.exit()的怪异.)

def main():
    ...do something...
    if something:
        return               # <----- return takes the place of exit
    ...do something else...

main()
Run Code Online (Sandbox Code Playgroud)

  • 改为使用return语句+1.使用return语句(带或不带返回值)意味着您的python程序可以在交互式会话中使用,也可以作为其他脚本的一部分使用.我对调用sys.exit并将我从Python解释器中转出的脚本非常恼火. (2认同)