Python 教程

Python 在 RootStack 体系中的定位是工具,而非核心。本教程面向已有 C/C++ 基础的读者,侧重两个方向:

  1. 快速解决事情 —— python -c "" 一行流、小脚本、辅助工具,不追求 Python 语法体系完整
  2. C ↔ Python 互操作 —— 在 C 项目中嵌入 Python 完成特定功能(CPython 内嵌、ctypes 调 C 库、pybind11/Cython 封装),将 Python 作为 C 生态的一个延伸工具

本教程假设读者已有 C 或 C++ 基础。若为纯初学者,建议先完成 C 语言教程 前 5 章再回到这里。


写在教程之前

本教程的定位

Python 不是替代 C,而是 C 程序员的工具。你不需要用 Python 重写整个项目,而是把它当作:

  • 快速验证python -c "" 替代临时写 C 编译运行,验证想法、测试小逻辑、做数据计算
  • C-Python 互操作:用 ctypes 调已有的 C 库,用 CPython API 在 C 程序中嵌入 Python,用 pybind11/Cython 给 C/C++ 库披上 Python 外衣
  • 脚本化辅助:代码生成(生成 C 头文件骨架)、日志分析、自动化测试、数据可视化 —— 用 Python 的快速开发能力服务 C 项目

不同系统下载 Python

Windows

  • python.org 下载安装包,安装时务必勾选 “Add Python to PATH”
  • 或使用 winget:winget install python
  • Winget 安装后可能需要重启终端才能识别 python 命令

macOS

  • brew install python3
  • 或去 python.org 下载 .pkg 安装包

Linux

  • Debian/Ubuntu:sudo apt install python3 python3-pip
  • Arch:sudo pacman -S python python-pip
  • Fedora:sudo dnf install python3 python3-pip

验证安装

python3 --version
pip3 --version

各系统可能同时存在 python / python3。建议统一使用 python3pip3,或者用 uv 管理 Python 版本。

编辑器选择

编辑器平台说明
VSCode + Python 插件全平台推荐。智能补全、调试、Jupyter 支持,C/C++ 插件可共存
PyCharm Community全平台完整 IDE,适合纯 Python 项目,对新手友好
Vim/Neovim + coc-pyright全平台终端轻量方案,C 程序员习惯的编辑方式

Python 版本说明

推荐 Python 3.10+。Python 3.10 引入了 match/case(模式匹配),3.11/3.12 有显著性能提升。

不要用 Python 2。Python 2 已于 2020 年停止维护。如遇旧系统上的 python 命令指向 Python 2,请检查 python3 或升级系统。

当前最新稳定版为 Python 3.12/3.13,但生产环境建议使用 3.10 或 3.11(库兼容性最广)。


教程结构

graph TB
 ROOT["python/"] --> INTRO["1入门/ (8篇)<br/>环境、基础语法(与C逐项对比)"]
 ROOT --> ADV["2精通/ (8篇)<br/>解释器底层 + C互操作(本教程灵魂)"]
 ROOT --> PRACTICE["3实战/ (5篇)<br/>小项目:一行流、构建辅助、与C配合"]
 ROOT --> LIB["4库/<br/>标准库 + 第三方库 分类索引"]
 ROOT --> ENG["5工程化/ (8篇)<br/>venv/conda/打包/测试/CI/CD/运行项目"]
 ROOT --> QUANT["6量化分析/ (6篇)<br/>NumPy/Pandas/回测/性能加速"]
 ROOT --> SCI["7科学计算/ (5篇)<br/>NumPy/SciPy/SymPy + C加速对比"]
 ROOT --> VIZ["8数据可视化/ (6篇)<br/>Matplotlib/Seaborn/Plotly/Dash"]
 ROOT --> GFX["9图形处理/ (4篇)<br/>Pillow/OpenCV/与C库互操作"]
 ROOT --> WEB["10web应用/ (6篇)<br/>Flask/FastAPI/Django/数据库/部署"]
 ROOT --> AI["11人工智能/ (6篇)<br/>sklearn/PyTorch/ONNX部署(衔接C++)"]
 ROOT --> NB["12notebook/<br/>Jupyter Notebook 交互式计算"]
 ROOT --> SCRAPE["13爬虫/<br/>网络爬虫:requests/BeautifulSoup/Scrapy"]
 ROOT --> CROSS["14跨语言/<br/>R/Julia 跨语言调用 (rpy2/juliacall)"]

相关教程

教程关系
Bash 脚本教程同为脚本语言教程,Bash偏系统/管道,Python偏通用/数据
C语言教程本教程前置,C↔Python互操作的核心
C++教程pybind11 需要 C++11
Rust教程Rust做性能关键模块,Python做胶水,PyO3 对应 pybind11

推荐学习路径

阶段一:快速上手(1-2 天)

顺序文件重点技巧
000 准备工作各系统安装配置、编辑器选择终端 REPL 即可跑 Python
101 认识 Python安装、REPL、python -cpython -c 替代临时 C 编译
202 变量与类型与 C 的类型逐项对比关注动态类型与 C 强类型的差异
303 列表与字典list/tuple/dict/set切片、推导式是 C 没有的武器

至此已能用 python -c 处理多数文本/数据处理任务。后面的 04-07 按需阅读。

阶段二:工具化思维(1 周)

顺序文件重点
404 字符串与文件str 方法、open/with、编码
505 异常与调试try/except/traceback/pdb
606 类与继承C struct → C++ class → Python class
707 模块与包import 机制、pip、venv 初识
8实战 01 一行流python -c 合集
9实战 02 日志分析实战脚本
10实战 03 代码生成Python 为 C 项目服务

阶段三:精通 —— C 互操作(1-2 周,本教程灵魂)

顺序文件重点
11精通 01 对象模型PyObject、引用计数、与 C 内存模型对比
12精通 02 GILGIL 原理、multiprocessing
13精通 03 字节码dis 模块、与 C 编译四步骤对比
14精通 04 生成器协程yield/yield from/async await 底层
15精通 05 ctypes加载 .so、结构体映射、回调
16精通 06 内嵌 CPython在 C 程序初始化解释器→调 Python
17Cython三种方案对比选型
18精通 08 进程管道双向通信、JSON/二进制交换

阶段四:专题工具 —— 按需查阅

领域入口目录核心库
工程化5工程化venv/uv/conda/pytest/ruff/pyproject.toml
从零运行项目运行现有项目克隆/虚拟环境/pip install/运行
Conda 环境管理Condaconda create python=3.10/PyTorch
量化分析6量化分析NumPy/Pandas/backtrader/akshare
科学计算7科学计算NumPy/SciPy/SymPy
数据可视化8数据可视化Matplotlib/Seaborn/Plotly/Dash
图形处理9图形处理Pillow/OpenCV
Web 应用10web应用Flask/FastAPI/Django
人工智能11人工智能sklearn/PyTorch/ONNX
Jupyter Notebook12notebookJupyterLab
网络爬虫13爬虫requests/BeautifulSoup/Scrapy/Playwright
R/Julia 跨语言14跨语言rpy2/juliacall

C ↔ Python 对比学习

语法对比

概念CPython
变量int x = 5; 静态类型x = 5 动态类型,名称绑定
数组int arr[10]; 连续内存arr = [0] * 10 引用列表
字符串char s[] = "hello";\0 结尾s = "hello" 不可变 str 对象
结构体struct Point { int x; int y; };class Point: x, y 或 namedtuple
函数指针int (*fp)(int, int);lambda x, y: x + y 一等函数
条件if (x > 0) { ... }if x > 0: 缩进块
循环for (int i = 0; i < n; i++)for i in range(n):
内存malloc/free 手动管理GC 自动回收,del 仅删引用

互操作方案速选

场景推荐方案说明
Python 调已有的 C .so/.dllctypes零额外依赖,标准库自带
Python 调 C .so(需复杂类型)CFFI比 ctypes 更灵活,支持 ABI/API 模式
为 C/C++ 库写 Python 绑定(性能优先)pybind11C++11 模板,PyTorch 官方采用
为 C 库写 Python 绑定(简单场景)Cython写 .pyx 文件编译为 .so
C 程序需要执行 Python 代码CPython C API 内嵌Py_Initialize() / PyRun_SimpleString()
C 程序与 Python 脚本交换数据subprocess + JSON最简单,无需编译依赖

与其他模块的关联

  • C 教程 — 系统编程基础、内存模型、互操作对照
  • C++ 教程 — pybind11 需要 C++11、SWIG 支持 C/C++
  • Rust 教程 — PyO3(Rust 侧 Python 绑定)对应 pybind11
  • 内核教程 — CPython 作为一种”语言运行时内核”
  • DSA 学习路线 — Python 刷题 vs C 刷题的效率差异
  • 红队知识库 — Python 在安全自动化中的应用

外部资源