主题
❓ 常见问题 FAQ
学完基础还会碰到各种"为什么"和"怎么办"。这一篇把高频问题一网打尽。
Python 2 vs 3 — 为什么别学 Python 2 了?
| Python 2 | Python 3 | |
|---|---|---|
| 状态 | 2020年1月1日起停止维护 | 当前主流,积极更新 |
print "hello" | print("hello") | |
| 除法 | 3/2 = 1(整数除法) | 3/2 = 1.5(浮点除法) |
| 字符串 | 默认 str = bytes | 默认 str = Unicode |
| 编码 | 😭 永远的痛 | 🎉 天生的 UTF-8 |
Python 2 已经不维护了,新项目100% 用 Python 3。如果你看到某个教程还在教 print "hello"(没括号),赶紧换。
pip install 报错怎么办?
SSL 证书错误
[SSL: CERTIFICATE_VERIFY_FAILED]原因:企业代理、系统时间不对、或证书缺失。
bash
# 方案1:换国内镜像(最推荐)
pip install xxx -i https://pypi.tuna.tsinghua.edu.cn/simple --trusted-host pypi.tuna.tsinghua.edu.cn
# 方案2:macOS 证书修复
/Applications/Python\ 3.12/Install\ Certificates.command网络超时
bash
# 加超时+重试
pip install xxx --default-timeout=100 --retries 5
# 或换镜像
pip install xxx -i https://mirrors.aliyun.com/pypi/simple/权限不足(Linux)
Permission denied: '/usr/lib/python3.x/...'bash
# ❌ 不要 sudo pip install!
# ✅ 装到用户目录
pip install --user xxx
# ✅ 或在虚拟环境里装缺少编译依赖
error: command 'gcc' failed某些包(如 psutil、mysqlclient)需要编译 C 扩展:
bash
# Ubuntu/Debian
sudo apt install python3-dev build-essential
# CentOS
sudo yum install python3-devel gcc编码问题怎么破?
UnicodeDecodeError
python
# ❌ 用 utf-8 读 GBK 文件
with open("file.txt", "r", encoding="utf-8") as f:
data = f.read() # UnicodeDecodeError!
# ✅ 指定正确编码
with open("file.txt", "r", encoding="gbk") as f:
data = f.read()
# ✅ 不确定编码时尝试常用编码
def read_any_encoding(path):
for enc in ["utf-8", "gbk", "gb2312", "latin-1"]:
try:
with open(path, "r", encoding=enc) as f:
return f.read()
except UnicodeDecodeError:
continue
raise ValueError(f"无法识别 {path} 的编码")UnicodeEncodeError
python
# Windows 控制台输出中文偶尔报错
import sys
sys.stdout.reconfigure(encoding="utf-8") # Python 3.7+最佳实践
- 文件全部用 UTF-8 编码
- 读别人的文件时
encoding="utf-8",出错再换gbk - JSON 永远带
ensure_ascii=False - CSV 给 Excel 用时用
utf-8-sig
list 和 tuple,什么时候用哪个?
| 特性 | list | tuple |
|---|---|---|
| 可变 | ✅ 可以增删改 | ❌ 创建后不可变 |
| 速度 | 稍慢 | 稍快 |
| 内存 | 更大 | 更省 |
| 可哈希(当 dict key) | ❌ | ✅(如果元素都可哈希) |
| 语义 | "我是一组可以变的数据" | "我是一组固定的数据" |
python
# 用 tuple 的场景
point = (3, 4) # 坐标——不会变
rgb = (255, 128, 0) # 颜色——不会变
days = ("周一", "周二", "周三", "周四", "周五", "周六", "周日") # 星期——不会变
config = ("localhost", 8080) # 配置——不会变
# 用 list 的场景
users = [] # 用户列表——会增删
items = ["苹果", "香蕉"] # 购物车——会变
results = [] # 计算结果——动态添加简单原则:数据创建后不改的用 tuple,可能改的用 list。
多线程 vs 多进程 — GIL 是什么?
Python 有一个著名的全局解释器锁(GIL):同一时刻只有一个线程能执行 Python 字节码。
python
# ❌ 多线程做 CPU 密集型计算 —— 不会更快(甚至更慢!)
# 因为 GIL 让线程轮流跑,不是真的并行
# ✅ 多线程做 I/O 密集型 —— 有效
# 网络请求、文件读写、数据库查询(线程等待时释放 GIL)
# ✅ 多进程做 CPU 密集型 —— 真正的并行
# multiprocessing 模块,每个进程有独立 GIL| 场景 | 方案 |
|---|---|
| 爬虫、API 请求等 I/O | threading 或 asyncio |
| 科学计算、图像处理 | multiprocessing |
| 简单的并行 | concurrent.futures.ThreadPoolExecutor / ProcessPoolExecutor |
python
from concurrent.futures import ThreadPoolExecutor, ProcessPoolExecutor
# I/O 密集型 → 线程池
with ThreadPoolExecutor(max_workers=5) as pool:
results = pool.map(fetch_url, urls) # 并发下载
# CPU 密集型 → 进程池
with ProcessPoolExecutor(max_workers=4) as pool:
results = pool.map(heavy_calc, data) # 并发计算学完基础后下一步学什么?
mermaid
graph LR
A[Python 基础] --> B[Web 开发]
A --> C[数据分析]
A --> D[自动化运维]
A --> E[AI/机器学习]
B --> B1["Flask / Django"]
C --> C1["NumPy / Pandas / Matplotlib"]
D --> D1["脚本自动化 / CI/CD"]
E --> E1["scikit-learn / PyTorch"]| 方向 | 学什么 | 适合谁 |
|---|---|---|
| 🌐 Web 开发 | Flask(轻量)→ Django(全栈)→ FastAPI(高性能) | 想做网站/API/后台系统 |
| 📊 数据分析 | NumPy → Pandas → Matplotlib → Jupyter | 处理数据、做报表、搞统计 |
| ⚙️ 运维自动化 | Fabric → Ansible → Docker SDK → 写脚本 | 管服务器、做 DevOps |
| 🤖 AI/机器学习 | scikit-learn → PyTorch / TensorFlow | 搞智能、玩模型 |
| 🕷 爬虫/数据采集 | Scrapy → Selenium → 反爬技巧 | 采集数据、做信息整合 |
| 🎮 其他 | PyQt(桌面软件)、Pygame(游戏)、Kivy(App) | 兴趣驱使 |
建议
先做一个小项目——给朋友写个自动发日报的脚本、爬个网站数据做分析、搭一个简单的个人博客。在实战中学最快。
Python 能做什么工作?
Python 在国内的就业方向非常广:
| 岗位 | 日常做什么 | 核心技能 |
|---|---|---|
| Python Web 后端 | 开发 API、后台管理系统 | Django/Flask/FastAPI + 数据库 |
| 数据分析师 | 用数据做业务分析、出报表 | Pandas + SQL + 可视化 |
| 运维开发 | 写自动化脚本、部署系统 | Linux + Python 脚本 + Docker |
| 测试开发 | 写自动化测试框架 | pytest + Selenium + CI/CD |
| 爬虫工程师 | 大规模数据采集 | Scrapy + 反爬 + 分布式 |
| AI 工程师 | 训练模型、部署 AI 服务 | PyTorch + 算法 + 工程化 |
| 全栈开发 | 前后端都写 | Python 后端 + Vue/React 前端 |
Python 不是最快的语言,但是开发效率最高的语言之一。它让你用最少的代码实现最多的功能。
推荐资源
- 📖 官方文档:docs.python.org/zh-cn/3/ — 最权威
- 📖 《Python 编程:从入门到实践》— 最好的入门书
- 🎥 B站搜「Python 入门」— 零基础视频教程
- 🏋️ LeetCode — 刷题练手
- 💬 Stack Overflow — 遇到问题先搜
最后的话
Python 的 slogan 是 "Batteries included"(内置电池),意思是它自带了很多开箱即用的功能。你学到的所有标准库、异常处理、文件操作,都是这"电池"的一部分。
编程不是记住了所有语法就行了——是在遇到需求时,知道用什么工具解决问题。所以不要再等了,打开编辑器,写你的第一个实用脚本。
🎉 恭喜完成 Python 全部入门教程!回到 目录 复习,或者开始你的第一个项目吧。
🎯 本章要点
- Python 2 在 2020年1月1日停止维护,不再有安全补丁。
- pip install --trusted-host 参数加镜像源可临时绕过证书验证
加载练习题中...