16. 附录 — Python 文档

来自菜鸟教程
Python/docs/3.8/tutorial/appendix
跳转至:导航、​搜索

16. 附录

16.1. 交互模式

16.1.1. 错误处理

发生错误时,解释器会打印错误消息和堆栈跟踪。 在交互模式下,它然后返回到主要提示; 当输入来自文件时,它在打印堆栈跟踪后以非零退出状态退出。 (由 try 语句中的 except 子句处理的异常在此上下文中不是错误。)有些错误是无条件致命的,会导致非零退出; 这适用于内部不一致和一些内存不足的情况。 所有错误信息都写入标准错误流; 执行命令的正常输出写入标准输出。

在主要或次要提示中键入中断字符(通常是 Control-CDelete)会取消输入并返回到主要提示。 1 在命令执行时输入中断会引发 KeyboardInterrupt 异常,该异常可由 try 语句处理。


16.1.2. 可执行的 Python 脚本

在 BSD'ish Unix 系统上,Python 脚本可以像 shell 脚本一样直接执行

#!/usr/bin/env python3.5

(假设解释器在用户的 PATH 上)在脚本的开头并给文件一个可执行模式。 #! 必须是文件的前两个字符。 在某些平台上,第一行必须以 Unix 样式的行结尾 ('\n') 结尾,而不是 Windows ('\r\n') 行结尾。 请注意,散列或磅字符 '#' 用于在 Python 中开始注释。

可以使用 chmod 命令为脚本赋予可执行模式或权限。

$ chmod +x myscript.py

在 Windows 系统上,没有“可执行模式”的概念。 Python 安装程序会自动将 .py 文件与 python.exe 相关联,以便双击 Python 文件将其作为脚本运行。 扩展名也可以是.pyw,在这种情况下,通常出现的控制台窗口被抑制。


16.1.3. 交互式启动文件

当您以交互方式使用 Python 时,每次启动解释器时执行一些标准命令通常很方便。 您可以通过将名为 PYTHONSTARTUP 的环境变量设置为包含启动命令的文件的名称来实现此目的。 这类似于 Unix shell 的 .profile 特性。

该文件仅在交互式会话中读取,而不是在 Python 从脚本中读取命令时读取,也不是在 /dev/tty 作为命令的显式源(否则其行为类似于交互式会话)时读取。 它在执行交互式命令的同一个命名空间中执行,因此它定义或导入的对象可以在交互式会话中不受限制地使用。 您还可以更改此文件中的提示 sys.ps1sys.ps2

如果您想从当前目录读取额外的启动文件,您可以使用类似 if os.path.isfile('.pythonrc.py'): exec(open('.pythonrc.py').read()) 的代码在全局启动文件中对其进行编程。 如果要在脚本中使用启动文件,则必须在脚本中显式执行此操作:

import os
filename = os.environ.get('PYTHONSTARTUP')
if filename and os.path.isfile(filename):
    with open(filename) as fobj:
        startup_file = fobj.read()
    exec(startup_file)

16.1.4. 自定义模块

Python 提供了两个钩子让你自定义它:sitecustomizeusercustomize。 要了解它是如何工作的,您首先需要找到您的用户 site-packages 目录的位置。 启动 Python 并运行以下代码:

>>> import site
>>> site.getusersitepackages()
'/home/user/.local/lib/python3.5/site-packages'

现在您可以在该目录中创建一个名为 usercustomize.py 的文件并将您想要的任何内容放入其中。 它会影响 Python 的每次调用,除非它以 -s 选项启动以禁用自动导入。

sitecustomize 的工作方式相同,但通常由计算机管理员在全局 site-packages 目录中创建,并在 usercustomize 之前导入。 有关更多详细信息,请参阅 site 模块的文档。

脚注

1
GNU Readline 包的问题可能会阻止这一点。