Python 开发总览:先建立正确的运行心智模型

# Python 开发总览:先建立正确的运行心智模型

本篇目标

从零理解 Python 代码怎样运行、项目环境怎样隔离,以及学习 Python 时真正要掌握的主线。学完后,你应该能够独立创建并运行一个干净的 Python 项目。

理解解释器创建虚拟环境运行模块看懂学习地图

# 先记住一句话

Python 是一门动态类型语言:代码由 Python 解释器执行,变量保存的是对象引用,项目依赖应放进独立的虚拟环境。

源代码 .py
  ↓ 交给 Python 解释器
编译为字节码
  ↓ 由 Python 虚拟机执行
创建对象、调用函数、产生结果
1
2
3
4
5

平时把 Python 称为 “解释型语言” 没问题,但它并不是逐字直接执行源码。以最常用的 CPython 为例,源码会先编译成字节码,再由解释器执行。

CPython 是什么

Python 是语言规范,CPython 是使用最广泛的官方实现。它主要用 C 编写,因此叫 CPython。除此之外还有 PyPy 等实现,但初学和多数生产项目默认使用 CPython。

# 为什么 AI 开发常用 Python

Python 的优势不是单次计算最快,而是 AI 生态完整、开发效率高,并且能够调用 C、C++ 和 CUDA 等高性能底层实现。

  • PyTorch、TensorFlow、Transformers、NumPy 和 Pandas 等常用工具都提供成熟的 Python 接口,研究代码和示例也多以 Python 为主;
  • Python 语法简洁,配合 Jupyter 可以快速处理数据、调整模型并查看实验结果;
  • 真正耗时的矩阵运算通常由框架底层的 C、C++、CUDA 或 GPU 执行,Python 主要负责调用底层计算库,并编排数据处理、模型训练或推理以及应用接入流程;
  • 训练完成后,还可以使用 FastAPI 等框架把模型接入 HTTP 服务、数据库和业务系统。
Python 调用底层计算库并编排 AI 流程
  → PyTorch 等框架
  → C++ / CUDA 计算核心
  → CPU / GPU 执行计算
1
2
3
4

因此,Python 可以同时兼顾开发效率和计算性能,但不代表整个 AI 系统都必须使用 Python。浏览器端可能使用 JavaScript,高吞吐服务或基础设施也可能使用 Go、Rust、Java 或 C++。

# 从零创建第一个项目

# 1. 确认解释器

# macOS 和 Linux 通常使用 python3,Windows 也可能使用 python。
python3 --version
1
2

不要依赖系统自带 Python 的具体版本。团队项目应在 README 或 pyproject.toml 中明确最低版本,并在 CI 中验证。

# 2. 创建并激活虚拟环境

# 创建项目目录并进入。
mkdir python-learning
cd python-learning

# 在当前项目中创建独立环境,第三方包会安装到 .venv 中。
python3 -m venv .venv

# macOS / Linux 激活方式。
source .venv/bin/activate

# Windows PowerShell 使用:.venv\Scripts\Activate.ps1
1
2
3
4
5
6
7
8
9
10
11

虚拟环境解决的是项目依赖隔离,不是操作系统级安全隔离。项目 A 可以使用某个库的 1.x,项目 B 使用 2.x,互不污染。

如果熟悉前端项目,可以把 pyproject.toml 大致理解为 Python 项目中的 package.json:两者都用于记录项目元数据、依赖和工具配置。

Node.js 项目 Python 项目 主要作用
package.json pyproject.toml 记录项目名称、版本、依赖和工具配置
node_modules/ 虚拟环境中的 .venv/ 存放当前项目安装的第三方依赖
package-lock.json uv.lock、poetry.lock 等 锁定依赖的具体版本
npm install pip install、uv sync 等 安装项目依赖

两者并不完全相同:package.json 通常还通过 scripts 提供统一的项目命令入口;pyproject.toml 是 Python 的标准项目配置入口,但具体安装命令和锁文件取决于 pip、uv 或 Poetry 等工具。

# 3. 编写并运行程序

# 文件位置:main.py
def greet(name: str) -> str:
    # 函数第一行的三引号字符串是文档字符串,可被 help()、IDE 和文档工具读取。
    """根据输入姓名生成问候语。类型标注用于阅读和静态检查。"""
    return f"你好,{name}!"

# 只有直接运行 main.py 时才进入这里;被其他模块导入时不会自动执行。
if __name__ == "__main__":
    print(greet("Python"))
1
2
3
4
5
6
7
8
9

文档字符串(Docstring)通常写在模块、类或函数内部的第一行,用来说明用途、参数、返回值和异常。公共代码和需要生成接口文档的代码适合保留;只在局部使用的简单函数可以改用普通 # 注释。

# 直接执行脚本。
python3 main.py
1
2

__name__ 是 Python 自动提供的模块变量。直接运行文件时值为 "__main__";导入文件时值通常是模块名。入口保护可以避免导入模块时意外执行启动逻辑。

# 脚本、模块、包和项目

名称 可以怎样理解 例子
脚本 被直接执行的 Python 文件 python3 main.py
模块 一个可被导入的 .py 文件 import json
包 组织多个模块的目录 app/services/
项目 源码、测试、依赖和配置的整体 一个 FastAPI 服务

同一个 .py 文件既可以被直接当作脚本运行,也可以作为模块被导入。真实项目更推荐从包入口启动,例如 python3 -m app,这样导入路径更稳定。

# Python 学习地图

1
语言基础

先掌握运行环境、对象与容器,再理解函数、模块和异常怎样组织程序。

2
抽象与运行机制

理解类型抽象、迭代协议、资源管理、对象生命周期和 GIL。

3
并发模型

分清协程、线程和进程的职责,并学会正确结束异步任务。

4
工程与服务

把 Python 能力落到 Web 接口、数据库事务、测试和生产服务中。

5
项目实战

沿真实项目调用链串联入口、依赖、请求、事务、异常和任务生命周期。

学习时不要只背语法。遇到一段代码,持续问六个问题:程序从哪个入口运行?数据是什么对象?谁持有它的引用?依赖由谁创建?异常与事务由谁处理?任务怎样结束?

# 高频面试题与回答

1. Python 是解释型语言吗?参考答案

可以这样概括,但更准确地说,以 CPython 为例,源码通常先被编译成字节码,再由 Python 虚拟机执行。它和 Go 这类通常提前编译成本地可执行文件的语言,在发布方式和启动模型上不同。

2. 为什么项目要使用虚拟环境?参考答案

虚拟环境把不同项目的第三方依赖隔离开,避免版本互相覆盖。它只解决 Python 包和解释器环境问题,不等于容器,也不能替代权限隔离。

3. if __name__ == "__main__" 有什么作用?参考答案

文件被直接执行时,模块的 __name__ 是 "__main__";被其他模块导入时则是它的模块名。这个判断用于隔离命令行入口或演示代码,避免导入模块时意外启动服务、读文件或执行其他副作用。

4. Python 导入一个模块时发生了什么?参考答案

解释器先查找并加载模块,然后执行它的顶层代码,创建模块对象并缓存到 sys.modules;同一进程后续通常直接复用缓存。正因为导入会执行顶层代码,连接数据库、启动线程等副作用应放进显式入口或生命周期函数。

5. 为什么 AI 开发经常使用 Python?参考答案

不是因为 Python 自己计算最快,而是因为它的 AI 生态完整、开发效率高。PyTorch、TensorFlow、Transformers、NumPy 等工具都提供成熟的 Python 接口,可以快速完成数据处理、模型实验和应用接入。真正耗时的矩阵计算通常由 C++、CUDA 和 GPU 执行,Python 主要负责调用底层计算库,并编排数据处理、模型训练或推理以及应用接入流程。生产系统也不必全部使用 Python,高吞吐服务和底层基础设施可以根据需要使用 Go、Rust、Java 或 C++。

# 接下来学什么

下一篇学习 Python 语法、对象与容器,重点不是记住所有写法,而是理解变量、对象和可变性。

# 参考资料

上次更新时间: 2026年09月10日 00:03:52