Skip to content

Python 学习路线与资料 ​

阅读顺序 ​

这组笔记以 Python 3 为前提,从能运行脚本开始,逐步组织可复用程序。初学者按下列顺序阅读;已有经验时可直接跳到需要的章节。

  1. 安装与首次运行 → 虚拟环境与工具。目标:确认解释器,用交互提示符和脚本输出问候。
  2. 变量、类型与切片 → 条件与循环。目标:独立处理一组输入数据。
  3. 函数、模块与包 → 列表、栈与队列。目标:封装计算逻辑,理解函数值、闭包与模块入口。
  4. 错误与异常 → 推导式、装饰器与资源管理 → 类与实例。目标:先理解失败与清理,再使用函数包装和对象状态。
  5. 标准库。目标:完成一个 UTF-8 文件统计或 JSON 转换脚本,并写断言或标准库测试。

以上构成语言基础主线。需要并发 I/O 时再做 线程与协程实践;需要 Web 服务时再进入 Django 实践。实践专题各有前置,不作为语言语法的先修课。

版本与资料 ​

以项目的版本约束和依赖兼容性选择 Python 3 版本,先运行 python --version 确认。文档右上角版本应与项目匹配;本文不固定“最新版本号”。

  • 官方教程:配合上述顺序理解语法。
  • 语言参考:查语法的准确行为。
  • 标准库参考:查参数、返回值和异常。
  • 书籍可选《Python 编程:从入门到实践》作为项目练习;具备基础后再读《流畅的 Python》或《Python Cookbook》。注意书籍版本与示例所用的 Python 版本。

贯穿练习 ​

创建 notes.py:读取几条字符串,去掉空白和空行,按长度排序并输出。随后把处理逻辑提取成函数、写断言,再改为读写 UTF-8 文件。用一个逐步完善的小程序检验学习效果,不必同时引入 Web、数据分析和机器学习框架。

贯穿练习参考 ​

先只处理内存数据,再加文件入口,避免同时排查排序和文件路径。以下是最初 notes.py 的完整参考,长度相同时保留输入顺序:

python
def clean_lines(lines):
    return sorted((line.strip() for line in lines if line.strip()), key=len)


if __name__ == "__main__":
    assert clean_lines([]) == []
    assert clean_lines(["  abc ", " ", " x "]) == ["x", "abc"]
    for line in clean_lines(["  abc ", " ", " x "]):
        print(line)

上面的内存版本预期输出两行 x、abc。文件阶段将 notes.py 完整替换为以下内容;先读完并关闭输入,再打开独立的输出文件:

python
def clean_lines(lines):
    return sorted((line.strip() for line in lines if line.strip()), key=len)


if __name__ == "__main__":
    with open("notes.txt", encoding="utf-8") as stream:
        cleaned = clean_lines(stream)
    with open("cleaned.txt", "w", encoding="utf-8", newline="\n") as stream:
        for line in cleaned:
            stream.write(line + "\n")

在同一目录准备UTF-8的 notes.txt,内容如下(前导空格会去掉,第二行为空):

text
  abc

 x
 中文

从该目录运行 python notes.py,预期不打印文本,cleaned.txt 使用UTF-8、一项一行、LF换行,最后一行也有换行,内容为:

text
x
中文
abc

输入空文件或只有空白行时,输出为空文件(0字节)。"w" 会覆盖既有 cleaned.txt;路径相对当前工作目录,不能把输入和输出改成同一个文件。输入缺失、权限不足或不是有效UTF-8会先抛出对应异常,此时还没有打开输出,旧输出不变。输出无法打开或写入失败也让异常传播、进程非零退出;一旦进入写入阶段,旧文件可能已截断或只写了一部分,这个基础练习不保证原子替换。以上文件内容与结果是参考预期,本轮未执行脚本或读写练习文件。

继续阅读