🐍 Python 学习笔记

从零开始的 Python 学习之旅 · 入门到中高级

150+
学习笔记
16
学习月数
6
阶段跨越
📅 2025年1月 — 起航
2025-01-04
入门

Python 环境搭建 & Hello World

安装 Python 3.12,配置 VS Code,写了第一行 print("Hello World")。理解了解释型语言和交互式 REPL 的概念。

2025-01-06
入门

变量、数据类型、基础运算

整数、浮点数、字符串、布尔值。学了类型转换 int()str(),还有 f-string 格式化 f"x = {x}"

2025-01-09
入门

字符串操作深入

split()join()strip()、切片 s[1:4]。练了一道反转字符串和判断回文的题。

2025-01-11
入门

列表、元组、字典

三种基础数据结构的增删改查。列表推导式 [x*2 for x in range(10)] 写起来真爽。字典在查找场景下比列表快很多。

# 列表推导式
squares = [x**2 for x in range(1, 11)]
# 字典计数
word_count = {}
for w in words:
    word_count[w] = word_count.get(w, 0) + 1
2025-01-15
入门

条件判断与循环

if/elif/elseforwhilebreakcontinue。写了猜数字小游戏。

2025-01-18
入门

函数定义与作用域

def、参数类型(位置/关键字/默认/可变)、return、全局变量与局部变量、lambda 表达式。

def calc(a, b, op="+"):
    if op == "+": return a + b
    elif op == "-": return a - b

# lambda
add = lambda x, y: x + y
2025-01-22
入门

文件读写

open()with 上下文管理器、read()/write()、逐行读取。写了一个简单的记事本程序。

2025-01-25
入门

异常处理

try/except/finally、捕获特定异常类型、raise 抛出自定义异常。理解了 EAFP(Easier to Ask Forgiveness than Permission)风格。

2025-01-29
入门

模块与包

importfrom ... import__name__ == "__main__"。自己写了一个 utils.py 工具模块,尝试了 pip 安装第三方包。

📅 2025年2月 — 进阶基础
2025-02-01
入门

集合与高级数据结构

set 的交并差集运算、collections 模块的 Counterdefaultdictnamedtuple

2025-02-05
入门

列表/字典/集合推导式精讲

嵌套推导式、条件过滤、性能比较(推导式比 for 循环快约 2x)。练了一道矩阵转置的题。

2025-02-08
入门

迭代器与生成器

__iter____next__yield 关键字、生成器表达式。生成器在处理大数据流时内存占用极低。

def fib():
    a, b = 0, 1
    while True:
        yield a
        a, b = b, a + b

gen = fib()
for _ in range(10):
    print(next(gen))
2025-02-12
入门

装饰器入门

高阶函数、闭包、@decorator 语法糖。写了一个计时装饰器 @timer,理解了装饰器在日志、鉴权中的用途。

2025-02-15
入门

参数进阶:*args 和 **kwargs

可变参数、关键字参数解包、装饰器中传递参数的写法。

2025-02-19
入门

编码规范与格式化

PEP 8 规范、black 自动格式化、flake8 静态检查、isort 排序 import。规范写好代码能省很多心。

2025-02-22
OOP

类与对象(一)

class__init__、实例方法/类方法/静态方法、self 的本质。理解了 Python 一切皆对象的哲学。

2025-02-26
OOP

类与对象(二):继承与多态

单继承、super()、方法重写、鸭子类型。写了一个简单的动物类层次结构。

📅 2025年3月 — OOP & 标准库
2025-03-01
OOP

魔术方法

__str____repr____eq____lt____getitem__、上下文管理器 __enter__/__exit__。让自定义类的行为像内置类型一样自然。

2025-03-04
OOP

property、封装与抽象基类

@property 实现 getter/setter、私有变量命名约定 _name / __nameabc 模块。

2025-03-08
标准库

datetime 与 time 模块

日期格式化 strftime、时区处理 pytz、时间戳转换、计时器实现。

2025-03-11
标准库

正则表达式 re 模块

re.matchre.searchre.findallre.sub、分组捕获。解析日志文件很实用。

import re
pattern = r"(\d{4})-(\d{2})-(\d{2})"
text = "今天日期是 2025-03-11"
match = re.search(pattern, text)
if match:
    year, month, day = match.groups()
2025-03-15
标准库

os、sys、shutil 系统编程

文件和目录操作、路径处理、环境变量、命令行参数。写了一个批量重命名文件的脚本。

2025-03-18
标准库

json、csv 数据处理

json.dumps/loadscsv.reader/writerDictReader。处理了一个真实的 API 返回数据。

2025-03-22
标准库

logging 日志系统

basicConfig、不同日志级别、Handler(FileHandler、StreamHandler)、Formatter、配置文件加载。告别 print 调试。

2025-03-25
标准库

argparse 命令行工具

写了一个带参数的命令行工具:python script.py --input file.txt --output result.json

2025-03-29
入门

单元测试入门

unittest 模块、assertEqualsetUp/tearDownpytest 的基本用法。写测试让人对代码更有信心。

📅 2025年4月 — Web 开发 & 网络编程
2025-04-01
Web

HTTP 协议基础 & requests 库

GET/POST 请求、状态码、请求头/响应头。用 requests 调了几个公开 API,处理 JSON 响应。

2025-04-05
Web

Flask 入门(一):路由与视图

安装 Flask、@app.route()、动态路由、request.args 获取参数。写了第一个 Web 页面 "Hello World"。

from flask import Flask, request
app = Flask(__name__)

@app.route('/')
def home():
    return "<h1>Hello, Python!</h1>"

@app.route('/api/hello')
def hello_api():
    name = request.args.get('name', 'World')
    return {"message": f"Hello {name}"}
2025-04-08
Web

Flask 入门(二):模板与表单

Jinja2 模板引擎、模板继承、表单处理(GET/POST)、flash 消息。做了一个简单的留言板。

2025-04-12
Web

Flask 入门(三):RESTful API

flask-restful、资源类、请求解析。写了一个简单的 Todo API(CRUD)。理解了 REST 设计原则。

2025-04-15
Web

Cookie & Session 机制

无状态协议的问题、Flask session 实现、签名 cookie 的安全性。

2025-04-19
Web

Flask 蓝图与项目结构

Blueprint 拆分模块,搭建了标准的 Flask 项目目录结构。大项目不能全写在一个文件里。

2025-04-22
网络

socket 编程基础

TCP 客户端/服务器模型、socket 模块、bind/listen/accept。写了一个简单的回声服务器。

2025-04-26
网络

urllib 与 URL 解析

urllib.requesturlparse、处理 URL 编码。理解了 requests 底层是怎么工作的。

2025-04-29
Web

虚拟环境与依赖管理

venvpip freeze > requirements.txtpipenv。项目之间依赖隔离很重要。

📅 2025年5月 — 数据库入门
2025-05-03
数据库

SQLite 基础

Python 内置的 sqlite3 模块、CREATE TABLEINSERTSELECT、参数化查询防 SQL 注入。

2025-05-06
数据库

SQL 进阶:JOIN、聚合、子查询

INNER JOINLEFT JOINGROUP BYHAVING、子查询。建了一个用户-订单的关联查询练习。

SELECT u.name, COUNT(o.id) as order_count
FROM users u
LEFT JOIN orders o ON u.id = o.user_id
GROUP BY u.id
HAVING order_count > 5;
2025-05-10
数据库

MySQL 安装 & 连接

安装 MySQL、pymysql 连接、连接池概念。对比了 SQLite 和 MySQL 的适用场景差异。

2025-05-13
数据库

ORM 入门:SQLAlchemy(一)

declarative_base、模型定义、session、CRUD 操作。ORM 让代码更像面向对象。

2025-05-17
数据库

SQLAlchemy(二):关系映射

relationshipForeignKey、一对多/多对多、懒加载与立即加载。

2025-05-20
数据库

数据库迁移:Alembic

alembic init、迁移脚本生成、upgrade/downgrade。上线后改表结构的必备工具。

2025-05-24
数据库

Redis 入门

安装 Redis、redis-py、字符串/哈希/列表/集合操作。对比了 Redis 和 MySQL 在数据结构层面的不同。

2025-05-27
数据库

Redis 实战:缓存与 Session

用 Redis 做 Flask 的 session 存储,缓存数据库查询结果(设置 TTL),pipeline 批量操作。

2025-05-31
数据库

SQL 优化基础

EXPLAIN 分析查询计划、索引原理(B+ Tree)、最左前缀原则、LIKE 通配符对索引的影响。

📅 2025年6月 — 多线程 & 并发
2025-06-03
多线程

进程与线程概念

操作系统层面的进程/线程区别、Python 的 GIL(全局解释器锁)。理解了 GIL 对 CPU 密集和 I/O 密集任务的不同影响。

2025-06-07
多线程

threading 模块基础

Threadstart()join()、守护线程。写了一个并发下载图片的脚本。

import threading
import requests

def download(url, filename):
    resp = requests.get(url)
    with open(filename, 'wb') as f:
        f.write(resp.content)

threads = []
for i, url in enumerate(urls):
    t = threading.Thread(target=download, args=(url, f"img_{i}.jpg"))
    threads.append(t)
    t.start()

for t in threads:
    t.join()
print("所有下载完成")
2025-06-10
多线程

线程同步:Lock & RLock

竞态条件、threading.Lockacquire/releasewith lock 上下文语法、可重入锁 RLock

2025-06-14
多线程

线程间通信:Queue & Event

queue.Queue(生产者-消费者模式)、threading.EventSemaphore 控制并发数。

2025-06-17
多线程

ThreadPoolExecutor 线程池

concurrent.futures.ThreadPoolExecutorsubmit()map()as_completed()。比手动管理线程优雅得多。

2025-06-21
多线程

multiprocessing 多进程

ProcessPool、进程间通信 Queue / Pipe。多进程可以绕过 GIL,适合 CPU 密集计算。

2025-06-24
多线程

进程池 vs 线程池 性能对比

写了一个基准测试:CPU 密集型用多进程快 4x,I/O 密集型用多线程也很快。理解了选型的关键在于任务类型。

2025-06-28
多线程

协程基础:yield 实现协作式多任务

用生成器模拟协程、yield 发送值 gen.send(value)。为之后学 asyncio 打基础。

📅 2025年7月 — 异步编程 & 进阶 Web
2025-07-01
异步

asyncio 入门(一)

async/await 语法、asyncio.run()、协程对象 vs 任务、asyncio.sleep()

2025-07-05
异步

asyncio 入门(二):Task & Future

create_task()asyncio.gather()wait()、超时控制 asyncio.wait_for()

async def fetch_data(url):
    async with aiohttp.ClientSession() as session:
        async with session.get(url) as resp:
            return await resp.json()

async def main():
    urls = ["https://api.example.com/1", "https://api.example.com/2"]
    results = await asyncio.gather(*[fetch_data(u) for u in urls])
    print(results)

asyncio.run(main())
2025-07-08
异步

aiohttp 异步 HTTP 请求

安装 aiohttp、异步请求、并发控制(Semaphore)。并发拉取 100 个 API 比 requests 快了十几倍。

2025-07-12
Web

Django 入门(一):项目搭建

django-admin startproject、项目结构、MTV 模式、manage.py。感受到了 Django"自带电池"的理念。

2025-07-15
Web

Django 入门(二):模型与 Admin

models.py 定义模型、makemigrations/migrate、Django Admin 后台自动生成。

2025-07-19
Web

Django 入门(三):视图与模板

函数视图、类视图、TemplateViewListView、Django 模板语言。

2025-07-22
数据库

MongoDB 入门

安装 MongoDB、pymongo、文档 CRUD、find() 条件查询、聚合管道。对比了文档型数据库和关系型数据库的设计差异。

2025-07-26
数据库

ORM 对比:SQLAlchemy vs Django ORM

两种主流 ORM 的语法差异、懒加载策略、N+1 查询问题及优化。SQLAlchemy 更灵活,Django ORM 更便捷。

2025-07-29
工具

Git 版本控制 & GitHub 协作

git initadd/commit/push/pull、分支管理、merge/rebase.gitignore。开始用 Git 管理所有项目代码。

📅 2025年8月 — 数据结构 & 算法
2025-08-02
算法

时间/空间复杂度分析

大 O 表示法、O(1)/O(n)/O(n²)/O(log n)。刷了几道 LeetCode 简单题分析复杂度。

2025-08-05
算法

排序算法实现

冒泡、选择、插入、快速排序、归并排序。手写快排和归并,理解了分治思想。

2025-08-09
算法

链表与二叉树

手写链表类、反转链表、二叉树遍历(前/中/后序、层序)。递归在树结构中很自然。

class TreeNode:
    def __init__(self, val):
        self.val = val
        self.left = None
        self.right = None

def inorder(root):
    if not root:
        return []
    return inorder(root.left) + [root.val] + inorder(root.right)
2025-08-13
算法

栈、队列、堆

Python list 作为栈、collections.deque 作为队列、heapq 实现最小堆。用堆解决了 Top K 问题。

2025-08-16
算法

哈希表与集合应用

两数之和、链表判环、无重复字符的最长子串。哈希表是空间换时间的经典。

2025-08-20
算法

动态规划入门

斐波那契、爬楼梯、背包问题。理解状态转移方程和备忘录优化。

2025-08-23
算法

图与 BFS/DFS

邻接表表示图、深度优先搜索、广度优先搜索。用 BFS 解了最短路径(迷宫)问题。

2025-08-27
算法

LeetCode 刷题周记

一周刷了 15 道题,涵盖数组、字符串、链表、树。总结了常见题型的解题模板。

2025-08-30
算法

二分查找 & 双指针

标准二分查找、边界条件处理、快慢指针(环形链表)、左右指针(两数之和 II)。

📅 2025年9月 — 深入数据库
2025-09-03
数据库

MySQL 事务与隔离级别

ACID 特性、读未提交/读已提交/可重复读/串行化、脏读/不可重复读/幻读。MySQL InnoDB 默认 RR。

2025-09-06
数据库

索引深入:聚簇索引与覆盖索引

InnoDB 聚簇索引结构、二级索引、回表查询、覆盖索引优化。通过 EXPLAIN 验证了 using index。

-- 覆盖索引:查询的所有字段都在索引中
EXPLAIN SELECT id, name FROM users WHERE name = 'Alice';
-- type: ref, Extra: Using index
2025-09-10
数据库

MySQL 锁机制

行锁、表锁、间隙锁(Gap Lock)、Next-Key Lock、死锁检测。理解了高并发下的锁竞争问题。

2025-09-13
数据库

PostgreSQL 入门

安装 PostgreSQL、psycopg2 连接、JSONB 数据类型、数组类型。对比了 MySQL 和 PostgreSQL 的特性差异。

2025-09-17
数据库

Elasticsearch 入门

倒排索引原理、elasticsearch-py、全文搜索、分词器。做了一个简单的博客搜索功能。

2025-09-20
数据库

数据库设计范式

第一二三范式、反范式化的场景、ER 图设计。设计了一个电商系统的数据库表结构。

2025-09-24
数据库

数据库备份与恢复

mysqldump、二进制日志(binlog)、时间点恢复。理解了为什么定期备份很重要。

2025-09-27
数据库

慢查询优化实战

开启慢查询日志、pt-query-digest 分析、改写 SQL、加索引、分页优化。把一个 5 秒的查询优化到了 50ms。

📅 2025年10月 — 分布式 & 消息队列
2025-10-01
分布式

分布式系统基础概念

CAP 定理、BASE 理论、一致性模型(强/弱/最终一致性)、分布式系统面临的挑战(网络分区、时钟同步)。

2025-10-04
分布式

REST vs RPC

RESTful API 设计规范、RPC 框架概念(gRPC)、Protocol Buffers 序列化。对比了 REST 的灵活性和 RPC 的高效性。

2025-10-08
分布式

消息队列入门:RabbitMQ

安装 RabbitMQ、pika 库、生产者/消费者模式、Exchange 类型(direct/fanout/topic)。

import pika

connection = pika.BlockingConnection(pika.ConnectionParameters('localhost'))
channel = connection.channel()
channel.queue_declare(queue='task_queue', durable=True)

channel.basic_publish(
    exchange='',
    routing_key='task_queue',
    body='Hello World',
    properties=pika.BasicProperties(delivery_mode=2))
print("消息已发送")
connection.close()
2025-10-11
分布式

消息队列:Redis Pub/Sub vs RabbitMQ

Redis 的发布/订阅模式、消息持久化、消费确认。对比了两者在消息可靠性方面的差异。

2025-10-15
分布式

Celery 分布式任务队列

Celery 架构、broker(Redis/RabbitMQ)、workerbeat 定时任务。异步发送邮件、定时爬虫。

2025-10-18
分布式

Celery 进阶:任务路由与结果存储

不同队列路由不同任务、任务结果后端(result backend)、任务链(chain)/组(group)/回调(callback)。

2025-10-22
分布式

Kafka 入门

Kafka 架构(Producer/Broker/Consumer/Topic/Partition)、kafka-python、消息有序性、消费者组。

2025-10-25
分布式

Kafka vs RabbitMQ 场景选型

Kafka 适合高吞吐日志/事件流(百万级/秒),RabbitMQ 适合可靠的消息投递和复杂路由。选对工具很重要。

2025-10-29
分布式

分布式锁实现

基于 Redis 的分布式锁(SETNX + 过期时间)、Redlock 算法、基于数据库的乐观锁。理解了什么场景需要分布式锁。

📅 2025年11月 — 容器化 & DevOps
2025-11-01
运维

Docker 入门

安装 Docker、docker run/pull/ps/exec、镜像与容器的概念、Dockerfile 编写。

2025-11-05
运维

Docker Compose 多容器编排

docker-compose.yml、定义 Web + MySQL + Redis 服务、网络配置、数据卷持久化。

services:
  web:
    build: .
    ports:
      - "5000:5000"
    depends_on:
      - db
      - redis
  db:
    image: mysql:8
    environment:
      MYSQL_ROOT_PASSWORD: secret
2025-11-08
运维

Nginx 反向代理与负载均衡

Nginx 配置反向代理、upstream 负载均衡(轮询/IP Hash/最少连接)、静态文件服务。

2025-11-12
运维

CI/CD 入门:GitHub Actions

编写 .github/workflows、自动化测试、自动部署到服务器。理解了持续集成/持续部署的流程。

2025-11-15
运维

Linux 基础与服务器部署

SSH 连接、文件权限、systemd 服务管理、supervisor 进程管理。终于把 Flask 项目部署到了服务器上。

2025-11-19
运维

HTTPS & Let's Encrypt

certbot 申请免费 SSL 证书、自动续期、Nginx SSL 配置。给个人网站配上了 HTTPS。

2025-11-22
运维

监控与日志收集

Prometheus 指标收集、Grafana 可视化面板、ELK(Elasticsearch + Logstash + Kibana)日志方案。

2025-11-26
运维

性能优化与压力测试

ab(Apache Bench)、locust 压测工具、分析瓶颈(CPU/Memory/I/O)。

2025-11-29
运维

Python 项目打包与发布

setuptoolspyproject.toml、发布到 PyPI。包的结构和依赖管理。

📅 2025年12月 — 高级主题
2025-12-03
高级

元类(Metaclass)

type 作为元类、自定义元类、__new__ vs __init__、单例模式的元类实现。

2025-12-06
高级

描述符(Descriptor)

__get____set____delete__ 协议。理解了 @property@staticmethod 背后的实现原理。

2025-12-10
高级

上下文管理器深入

contextlib 模块、@contextmanager 装饰器、contextlib.ExitStack 管理多个上下文。

2025-12-13
分布式

gRPC 入门

Protocol Buffers 定义服务、grpcio 生成代码、Unary/Server Streaming/Bidirectional Streaming。

syntax = "proto3";
service Greeter {
  rpc SayHello (HelloRequest) returns (HelloReply);
}
message HelloRequest {
  string name = 1;
}
message HelloReply {
  string message = 1;
}
2025-12-17
分布式

Consensus 算法:Raft 简介

Leader 选举、日志复制、安全性。理解了 etcd/Consul 等一致性存储的底层原理。

2025-12-20
高级

数据库分库分表

垂直分库、水平分表(Sharding)、分片键选择、读写分离架构。ShardingSphere / vitess 中间件。

2025-12-24
分布式

微服务架构设计

微服务拆分原则、服务发现(Consul)、API 网关、熔断/降级(Hystrix 模式)、分布式链路追踪(Jaeger)。

2025-12-27
测试

测试进阶:Mock & Fixture

unittest.mockpytest.fixturepytest.mark.parametrize、覆盖率 pytest-cov

2025-12-31
年终

🎉 年终总结:一年的 Python 学习之路

从 1 月起航到年底,经历了 12 个月的学习。从 print("Hello World") 到分布式架构,总共写了 200+ 小时的代码,完成 3 个完整项目。Python 不仅是语言,更是一种思维方式。明年继续!

📅 2026年 — 实战项目 & 持续精进
2026-01-07
项目

实战:个人博客系统(Flask)

从 0 搭建完整博客:用户认证、文章 CRUD、Markdown 渲染、评论系统。使用了 Flask + SQLAlchemy + Bootstrap。

2026-01-14
项目

博客系统:搜索功能 & 部署

集成 Elasticsearch 全文搜索、Nginx + Gunicorn 部署、HTTPS 配置。项目正式上线。

2026-01-21
性能

Python 性能分析

cProfile 性能分析、line_profiler 逐行分析、memory_profiler 内存分析。找到了项目中的性能瓶颈。

2026-01-28
高级

Cython 与性能优化

Cython 编译 Python 代码、类型声明加速、numba JIT 编译。CPU 密集计算提速了 50x。

2026-02-04
分布式

实战:分布式爬虫系统

Scrapy + Redis 分布式爬虫、去重(Bloom Filter)、Celery 任务调度、数据落库。

2026-02-11
分布式

爬虫进阶:IP 代理池 & 反爬对抗

代理池维护(Redis Set)、User-Agent 轮换、请求频率控制、渲染动态页面的方案(Selenium/Playwright)。

2026-02-18
高级

SQL 窗口函数 & 复杂查询

ROW_NUMBER()RANK()LAG/LEADSUM() OVER()。窗口函数在报表查询中非常强大。

SELECT
  name,
  department,
  salary,
  RANK() OVER (PARTITION BY department ORDER BY salary DESC) as rank
FROM employees;
2026-02-25
测试

TDD 开发实践

尝试测试驱动开发:先写测试再写代码。写了完整的 API 测试套件,覆盖率 90%+。

2026-03-04
分布式

实战:API 网关

基于 Flask 实现简单的 API 网关:路由转发、限流(令牌桶)、鉴权(JWT)、请求日志。

2026-03-11
分布式

gRPC 实战:微服务间通信

用 gRPC 实现用户服务和订单服务的通信,双向流实现实时推送。Protobuf 的编码效率优势很明显。

2026-03-18
分布式

Kubernetes 入门

Pod/Deployment/Service/Ingress 概念、kubectl 常用命令、minikube 本地集群。

2026-03-25
分布式

K8s 部署实战

将 Flask 应用容器化并部署到 K8s:编写 Deployment YAML、Service 暴露、ConfigMap 配置管理、滚动更新。

2026-04-01
高级

Redis 高级数据结构

HyperLogLog(UV 统计)、Bitmap(签到)、Sorted Set(排行榜)、Stream(消息队列)。

2026-04-08
高级

缓存策略与一致性

Cache Aside、Read/Write Through、缓存穿透/击穿/雪崩的解决方案。用 Redis 分布式锁防止缓存击穿。

2026-04-15
高级

asyncio 深入:事件循环与底层原理

事件循环机制、回调地狱与协程、asyncio.Future 底层实现、自定义 awaitable 对象。

2026-04-22
分布式

分布式事务

两阶段提交(2PC)、TCC、Saga 模式、最终一致性方案。没有完美的分布式事务方案。

2026-04-29
项目

FastAPI 入门

安装 FastAPI、自动生成 OpenAPI 文档、Pydantic 数据校验、依赖注入。async 原生支持很香。

2026-05-06
项目

实战:实时聊天应用

FastAPI + WebSocket + Redis Pub/Sub。支持多房间实时聊天,理解 WebSocket 的握手和帧协议。

2026-05-13
分布式

云原生架构总结

从单体 Flask 到微服务 + K8s + 消息队列的演变过程。回顾整个学习历程,Python 生态在云原生领域的工具链已经非常成熟。