Skip to content

❓ 常见问题 FAQ ​

学完基础还会碰到各种"为什么"和"怎么办"。这一篇把高频问题一网打尽。

Python 2 vs 3 — 为什么别学 Python 2 了? ​

Python 2Python 3
状态2020年1月1日起停止维护当前主流,积极更新
printprint "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,什么时候用哪个? ​

特性listtuple
可变✅ 可以增删改❌ 创建后不可变
速度稍慢稍快
内存更大更省
可哈希(当 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/Othreading 或 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 参数加镜像源可临时绕过证书验证
加载练习题中...