Python 入门与环境搭建
了解 Python 这门语言,安装开发环境,写出你的第一行 AI 相关代码。
Python 是什么?
Python 是一种高级编程语言,由 Guido van Rossum 于 1991 年创建。"高级"意味着它的语法接近自然语言,你不需要管内存分配这类底层细节,可以专注于解决问题本身。
解释型语言(Interpreted Language)
Python 代码不需要先编译成机器码再运行。你写完代码,解释器立刻逐行执行。这就像跟翻译官说话,说一句翻一句,方便调试和实验,非常适合 AI 开发时快速迭代想法。
动态类型(Dynamic Typing)
声明变量时不需要指定类型,Python 会自动推断。写 x = 10 就行,不用写 int x = 10。这让代码更简洁,但也要求你理解数据类型的概念。
缩进语法(Indentation-based)
Python 用缩进(空格)来表示代码的层级关系,而不是大括号 {}。这强制你写出整洁、易读的代码,是 Python 代码风格统一的重要原因。
为什么 AI 选择了 Python
2012 年深度学习爆发时,研究人员需要一种能快速实验的语言。Python 简洁的语法让科学家能把精力放在算法上,而不是语言细节上。加上 NumPy 等科学计算库,Python 自然成为 AI 领域的"官方语言"。
安装 Python 环境
推荐方案:Anaconda
对于 AI 开发,强烈推荐安装 Anaconda(或轻量版 Miniconda)。它不只是 Python 本身,还包含了 conda 包管理器,可以轻松创建隔离的环境,避免不同项目的库版本冲突。
虚拟环境(Virtual Environment)
想象你有两个项目:项目A需要 TensorFlow 2.10,项目B需要 TensorFlow 2.15。如果都装在同一个地方就会冲突。虚拟环境就是为每个项目创建独立的"沙箱",互不干扰。这在 AI 开发中非常重要,因为不同 AI 框架对库版本的要求很严格。
# 安装完 Anaconda 后,用 conda 创建 AI 专用环境
conda create -n ai_dev python=3.11
# 激活这个环境(每次开始工作前都要激活)
conda activate ai_dev
# 安装 AI 开发常用库
pip install numpy pandas matplotlib scikit-learn torch openai
# 查看已安装的库
pip list
# 退出环境
conda deactivate
Jupyter Notebook —— AI 开发者的最爱
Jupyter Notebook 是一种交互式编程环境,允许你把代码、文字说明、图表混合在一个文档里。AI 研究论文的代码几乎都用 Jupyter 演示。你可以运行一个代码单元格,立刻看到结果,然后修改再运行,非常适合探索数据和调试模型。→ Jupyter Notebook 实战指南
# 安装 Jupyter
pip install jupyter
# 在当前目录启动
jupyter notebook
# 或使用更现代的 JupyterLab
pip install jupyterlab
jupyter lab
也可以使用 VS Code
VS Code + Python 插件 + Jupyter 插件的组合也非常好用。VS Code 还有 GitHub Copilot 等 AI 辅助编程功能,适合日常开发。
pip:Python 的包管理器
pip(Pip Installs Packages)是 Python 的包管理工具。就像 App Store 一样,你可以用 pip 安装、更新、卸载 Python 的第三方库。所有 AI 相关的库都通过 pip 安装。
包(Package)和库(Library)
包是别人写好的、可复用的代码集合。你不需要从零实现矩阵乘法,直接 pip install numpy 安装 NumPy 包,然后 import numpy 就可以使用里面所有的数学函数了。这是 Python 生态强大的核心原因。
# 安装一个包
pip install numpy
# 安装指定版本
pip install numpy==1.24.0
# 安装多个包
pip install numpy pandas matplotlib
# 更新包
pip install --upgrade numpy
# 卸载包
pip uninstall numpy
# 导出当前项目的所有依赖(用于分享项目)
pip freeze > requirements.txt
# 根据 requirements.txt 安装所有依赖
pip install -r requirements.txt
requirements.txt 的重要性
在 AI 项目中,记录所有依赖版本非常关键。模型在你的环境能跑,换台机器因为库版本不同可能就跑不起来。养成用 pip freeze > requirements.txt 记录依赖的好习惯。
第一个 Python 程序
传统上第一个程序是打印 "Hello, World!",我们稍微升级一下,写一个能感受到 Python 特点的例子。
# Python 注释用井号 # 开头
# 注释不会被执行,用来解释代码
# print() 是内置函数,把内容输出到屏幕
print("Hello, Python AI World!")
# 变量不需要声明类型
name = "Claude" # 字符串
version = 3.11 # 浮点数
is_ai_friendly = True # 布尔值
# f-string:格式化字符串,用 {} 嵌入变量
print(f"Python {version} 是 AI 开发的利器")
print(f"适合 AI?{is_ai_friendly}")
# 简单的列表
ai_libraries = ["NumPy", "PyTorch", "scikit-learn"]
print(f"常用 AI 库: {ai_libraries}")
# 列表长度
print(f"共有 {len(ai_libraries)} 个库")
Hello, Python AI World!
Python 3.11 是 AI 开发的利器
适合 AI?True
常用 AI 库: ['NumPy', 'PyTorch', 'scikit-learn']
共有 3 个库
用 Python 做个简单的 AI 演示
来看看 Python 在 AI 场景中的代码长什么样。下面用 OpenAI 接口做一个最简单的 AI 对话(需要先安装 openai 库和有 API Key):
# 安装:pip install openai
from openai import OpenAI
# 创建客户端(API Key 从环境变量读取)
client = OpenAI()
# 调用 GPT-4o 模型
response = client.chat.completions.create(
model="gpt-4o",
messages=[
{"role": "user", "content": "用一句话解释什么是人工智能"}
]
)
# 提取返回的文本
answer = response.choices[0].message.content
print(f"AI 回答:{answer}")
# 就这么几行,你已经在调用 AI 了!
看到这段代码的感受
如果你感觉这段代码很短、很像英语,那就对了。Python 的设计哲学就是"代码应该可读"。等你学完本课程,这段代码的每一行你都能完全理解并自己写出来。
Python 的三种运行方式
| 方式 | 适合场景 | 启动命令 |
|---|---|---|
python script.py |
运行完整脚本,部署上线 | python hello.py |
| 交互式解释器(REPL) | 快速测试单行代码 | python |
| Jupyter Notebook | 数据探索、AI 实验、可视化 | jupyter notebook |
REPL(Read-Eval-Print Loop)交互式解释器
在终端输入 python,进入一个交互环境,你输入一行代码,马上看到结果,然后再输入下一行。这叫 REPL。在 AI 开发中,经常用 REPL 快速验证想法,比如检查一个函数的输出是否符合预期。
uv —— 新一代 Python 包管理工具
uv 是 2024 年推出的高性能 Python 包管理器,由 Rust 编写,比传统 pip 快 10–100 倍。它可以替代 pip、virtualenv、pyenv 等多个工具,越来越多的 AI 项目开始使用它。
- uv Astral 公司开发的 Rust 实现包管理器,兼容 pip 接口。核心优势:极速依赖解析(利用 Rust 并发)、内置虚拟环境管理、无需先安装 Python。
- 依赖解析(Dependency Resolution) 自动计算安装一个包时需要同时安装的所有间接依赖,并解决版本冲突。uv 使用比 pip 更高效的算法,在大型项目中差距尤其明显。
- 锁定文件(Lock File) uv.lock 精确记录所有依赖及其版本,确保团队所有成员、CI/CD 环境使用完全相同的依赖版本,避免"在我机器上能跑"的问题。
- Python 版本管理 uv 内置 Python 版本管理,可自动下载指定版本的 Python,无需单独安装 pyenv。
# 安装 uv(macOS / Linux)
curl -LsSf https://astral.sh/uv/install.sh | sh
# 安装 uv(Windows PowerShell)
# powershell -c "irm https://astral.sh/uv/install.ps1 | iex"
# 创建虚拟环境并指定 Python 版本
uv venv --python 3.13
# 激活虚拟环境(和 venv 一样)
source .venv/bin/activate # macOS/Linux
# .venv\Scripts\activate # Windows
# 安装包(比 pip 快 10-100 倍)
uv pip install numpy pandas torch
# 从 requirements.txt 安装
uv pip install -r requirements.txt
# 生成锁定文件(更精确的依赖记录)
uv pip compile requirements.txt -o requirements.lock
# 运行脚本(自动创建隔离环境)
uv run train.py
# 查看安装速度对比
# pip install torch → 约 45 秒
# uv pip install torch → 约 3 秒(有缓存时更快)
uv 与 conda 的选择
uv 适合纯 Python 项目,速度极快;conda 适合需要非 Python 依赖(如 CUDA 驱动、MKL 数学库)的 AI 项目。深度学习项目建议先用 conda 安装 CUDA,再用 pip/uv 安装 Python 包。两者不互相排斥。
Python 3.13 —— 最新版本新特性
Python 3.13(2024 年 10 月发布)带来了几个重要改进。了解这些变化,能帮你写出更现代的 Python 代码。
- 实验性无 GIL 模式(PEP 703) GIL(全局解释器锁)是 CPython 中防止多线程并发访问的锁,使得 Python 多线程无法真正并行运行 CPU 密集型任务。3.13 引入实验性的"无 GIL"构建(需编译时启用 --disable-gil),允许真正的多线程并行,对 AI 推理服务可能带来显著提升。
- 改进的交互式解释器 3.13 的 REPL 支持多行编辑、彩色输出和更好的错误提示,无需安装 IPython 也能获得更好的交互体验。
-
类型参数语法(PEP 695)
新的
type关键字和[T]语法简化了泛型类型别名的写法,让类型提示更简洁易读。
# Python 3.12+ 新类型别名语法(PEP 695)
# 旧写法(3.11 及之前):
from typing import TypeAlias
Vector: TypeAlias = list[float]
# 新写法(3.12+):更简洁
type Vector = list[float]
type Matrix[T] = list[list[T]] # 泛型类型别名
# 泛型函数的新语法
# 旧写法:
from typing import TypeVar
T = TypeVar('T')
def first_old(lst: list[T]) -> T:
return lst[0]
# 新写法(3.12+):
def first[T](lst: list[T]) -> T:
return lst[0]
# AI 场景:给训练函数添加类型提示
from typing import Callable
type LossFunction = Callable[[list[float], list[float]], float]
def train(data: Matrix[float], loss_fn: LossFunction) -> float:
"""类型提示让函数签名自文档化"""
# ...训练逻辑
return 0.0
无 GIL 模式的注意事项
Python 3.13 的无 GIL 模式仍是实验性功能,默认不启用。现有 C 扩展(如 NumPy)在无 GIL 下可能不安全。生产 AI 项目不要使用实验性无 GIL 构建。真正需要 CPU 并行的场景,仍推荐使用 multiprocessing 或 concurrent.futures.ProcessPoolExecutor。
本章小结
Python 是 AI 开发的标准语言,核心特征是解释型、动态类型和缩进语法。安装环境推荐 conda(AI 项目)或 uv(纯 Python 项目)。三种运行方式各有适用场景:脚本文件用于生产部署,REPL 用于快速验证,Jupyter Notebook 用于数据探索和实验。Python 3.13 带来了无 GIL 实验和更简洁的类型语法。