为什么 Ctrl + C 不会终止在终端中运行的 Python?

Ano*_*ith 7 command-line process signal

我试图理解为什么当我在无限循环中按 Ctrl + C 时整个 Python 进程不会被终止,或者就我在终端中运行的任何 Python 函数而言,只有循环/函数被停止?

And*_*y J 6

这是因为Python解释器和交互会话的设计。

Ctrl + C 向 Python 进程发送信号SIGINT ,Python 解释器通过在当前运行的作用域中引发KeyboardInterrupt 异常来处理该信号。

如果解释器在交互式会话中运行(即通过运行pythonpython3在控制台),则会打印当前函数中的异常,并且返回到 Python 提示符。如果解释器正在运行脚本(例如通过python3 my_script.py),那么除非脚本处理 KeyboardInterrupt,否则当引发异常时整个程序将停止。