为什么Python在完成后会自动退出脚本?
Python是一种脚本语言。这意味着Python代码在Python解释器的帮助下逐行执行。当Python解释器遇到文件结束字符时,它无法从脚本中检索任何数据。这个 EOF(end-of-file)字符与在Python中从文件读取数据时通知文件结束的 EOF 相同。
每个Python脚本的末尾都有一个 EOF字符,指示解释器停止执行代码。在处理连接到 tty 设备的标准输入时,我们可以使用 UNIX 上的 CTRL+D 和 Windows 上的 CTRL+Z, ENTER 产生类似的结果。
考虑这个简单的代码,它将一个数字作为用户输入并返回该数字的两倍。
Python3
a = int(input("Enter number: "))
# waiting for user input...
print("Twice of the number: ", 2 * a)
Python3
import atexit
a = 5
print("Twice of a:", a*2)
atexit.register(print, "Exiting Python Script")
尝试在程序等待用户输入时按下 EOF字符(取决于您的操作系统)。该程序将在遇到 EOF字符时立即终止,如下所示:
请注意,程序在程序完成之前遇到 EOF 时会抛出EOFError异常。
如何检测脚本退出?
我们可以使用 atexit 模块来检测脚本退出。以下代码使用 atexit 模块的register()函数检测脚本退出。
Syntax: atexit.register(fun, *args, **kwargs)
Parameters: First the function name is mentioned and then any arguments for that function is passed. The parameters are separated using ‘, ‘.
Return: This function returns the called fun and hence the calling can be traced.
atexit.register()方法将一个函数作为参数,该函数将在脚本退出时执行。
蟒蛇3
import atexit
a = 5
print("Twice of a:", a*2)
atexit.register(print, "Exiting Python Script")
输出:
Twice of a: 10
Exiting Python Script