入门导览、解释器与第一个程序
本节目标
从 Python 3.14 解释器、REPL 与脚本运行到第一个完整程序,建立零基础查询 Python 手册的入口。
这一入门导览既可顺序阅读,也可在安装或运行遇阻时直接查询。内容从确认 Python 3.14 解释器开始,依次说明 REPL、脚本、命令字符串与模块入口,最后用一个输出固定的程序串起完整流程;出现错误时,可按文末的顺序定位。阅读不以 C、C++ 或其他语言经验为前提。
安装并确认 Python 3.14
先在终端运行:
python3.14 --version
系统若提供平台启动器,也可以由它选择并查询 Python 3.14,例如 Windows 上常见的 py -3.14 --version。解释器位置会随操作系统、安装器、虚拟环境和管理员策略变化,本手册因而不假定某条通用安装路径。版本命令显示 Python 3.14.x,且后续命令始终调用同一个解释器,才是需要建立的检查基线。
python、python3 和 python3.14 同时存在时,名称本身不足以证明版本,须分别运行 --version。本手册以 Python 3.14 为基线,允许补丁版本不同;复现实验或排错时应同时记录完整版本输出和实际使用的命令。
| 要确认的事情 | 查询方式 | 如何解释 |
|---|---|---|
| 当前命令的版本 | python3.14 --version | 应显示 Python 3.14 的版本号 |
| 当前命令的可执行文件 | python3.14 -c "import sys; print(sys.executable)" | 输出当前进程实际使用的路径 |
| 当前实现 | python3.14 -c "import sys; print(sys.implementation.name)" | CPython 会输出 cpython |
解释器、REPL、脚本与模块
Python 解释器负责读取并执行 Python 代码,同一个解释器可从四种常见入口接收代码。入口应按任务选择:
| 入口 | 示例 | 适合什么 |
|---|---|---|
| TTY 交互模式(REPL) | 在终端输入 python3.14 | 立即输入一个表达式或短语句,观察结果 |
| 文件脚本 | python3.14 hello_runtime.py | 保存、复查并重复运行一段程序 |
| 命令字符串 | python3.14 -c "print(2 + 3)" | 从终端或工具执行很短的一次性代码 |
| 模块入口 | python3.14 -m module_name | 按模块名查找并执行模块或包提供的入口 |
REPL 是“读取、求值、输出、循环”的交互环境,适合立即观察表达式结果。普通启动时,只有当标准输入连接到交互终端(TTY)且没有给出脚本、-c 或 -m 等入口,解释器才通常显示 >>> 提示符。脚本不会自动展示普通表达式;需要可见输出时须显式调用 print()。
-i 会在脚本、-c 或 -m 执行结束后进入交互模式;对应的环境控制是 PYTHONINSPECT。这种显式的执行后交互模式可用于检查脚本或命令留下的全局名称,也不要求标准输入看起来像终端。
-c 后的字符串就是待执行代码,而命令行引号会先由当前 shell 处理。代码一旦复杂,写入文件更容易把 shell 引号问题与 Python 问题分开。-m 接收模块名而非文件路径,并按 Python 的模块查找规则定位代码;完整导入系统不属于本章范围。
源码编码、缩进、名称与注释
Python 源文件默认按 UTF-8 解码,可以直接书写中文注释和字符串。新项目通常保持这一默认值;只有确实要使用其他编码时,才在文件开头声明。若编辑器保存编码与解释器读取编码不一致,程序甚至可能在开始执行前就报告编码或语法错误。
缩进是 Python 语法的一部分,不只是排版。冒号后的代码块必须缩进,同一代码块的缩进层级必须一致。推荐每级使用四个空格,并让编辑器显示不可见字符,避免混用制表符和空格带来的歧义:
if ready:
print("开始")
名称用于引用对象。Python 虽允许广泛的 Unicode 标识符,但名称需要在不同键盘、字体和工具间使用,或供团队协作时,还应易输入、易分辨、易搜索;英文小写单词配合下划线通常更稳妥,例如 actual_version。# 从当前位置开始一行注释,适合解释原因和边界,而非复述代码表面含义。字符串不能代替普通注释,单独放在某些位置时还会成为文档字符串。
第一个完整程序
下面的程序以主、次版本为第一道检查。若不是 Python 3.14,它把诊断写入标准错误并返回退出状态 1;版本符合时,则向标准输出写三行固定文本并返回 0。固定输出可将程序结果与解释器提示符明确区分开。
main() 在这里仍是普通函数名。文件作为脚本执行时,特殊名称 __name__ 的值为 "__main__",if __name__ == "__main__" 因而会调用入口函数;同一文件日后被其他代码导入时,这个守卫可避免入口自动运行。理解这层脚本入口语义即可,无须先掌握完整导入系统。
import sys
EXPECTED_VERSION = (3, 14)
def main() -> int:
actual_version = sys.version_info[:2]
if actual_version != EXPECTED_VERSION:
print(
f"error: expected Python 3.14, got {actual_version[0]}.{actual_version[1]}",
file=sys.stderr,
)
return 1
print("Hello, Python!")
print("version=3.14")
print("mode=script")
return 0
if __name__ == "__main__":
raise SystemExit(main())
Hello, Python!
version=3.14
mode=script
把文件保存后,在它所在目录运行 python3.14 hello_runtime.py。终端中看到的三行应与上面的输出逐字一致;>>> 是 REPL 提示符,不是脚本输出,也不应复制进源文件。
语法错误、异常与 traceback
解释器无法按 Python 语法解析程序时,会报告 SyntaxError,并给出文件、行号及可能的指示位置。检查应从附近的括号、引号、冒号和缩进开始;真正遗漏的符号也可能位于所指位置的上一行。
代码已经开始执行却无法完成某个操作时,会引发异常;未处理的异常通常产生 traceback。可按以下固定顺序阅读:
- 先读 traceback 最后一行,确认异常类型和消息,例如
NameError: name 'count' is not defined。 - 再从调用帧中追踪到自己的代码,优先看文件名、行号和对应源码;库内部帧提供调用路径,但不一定是根因。
- 回到最接近失败操作的用户代码,核对传入的值、名称和前置条件,然后从那里向上追踪调用者。
异常类型说明失败类别,消息补充本次失败的细节;两者都要保留。traceback 默认写到标准错误,不应与程序的正常标准输出混为一谈。修复错误后重新运行同一条命令,确认退出状态和输出都恢复到预期。
首批阅读路线与查询方法
顺序学习可沿“运行方式 → 对象与名称 → 容器 → 表达式和控制流 → 函数 → 类型标注”推进。每掌握一个概念,就用短小且输入固定的脚本验证;无需等到记住全部语法才开始编写程序。
把本手册当作查询工具时,先描述任务或症状,再选择入口:
| 当前问题 | 查询入口 |
|---|---|
| 不确定解释器是否正确 | 本章的“安装并确认 Python 3.14” |
不知道该用 REPL、脚本、-c 还是 -m | 本章的“解释器、REPL、脚本与模块” |
| 看到缩进、语法或运行时错误 | 本章的源码规则与 traceback 阅读顺序 |
| 不理解变量为何变化、值属于什么类型 | 下一章的对象、名称与基本类型 |
接下来阅读对象、名称、赋值与基本类型,建立后续所有容器、控制流和函数章节都会使用的对象模型词汇。