《Python编程入门》4.3 一等函数、lambda 与 functools
本节核心事实是:Python 里函数是对象,能被赋值、放进容器、当参数传、当返回值,这正是 lambda 与 functools 存在的原因。接着讲清 lambda 的边界与 PEP 8 建议,比较 map/filter 与推导式的取舍,介绍 itemgetter/attrgetter 替代 lambda,最后演示 reduce、singledispatch 与 functools.cache。
tag
本节核心事实是:Python 里函数是对象,能被赋值、放进容器、当参数传、当返回值,这正是 lambda 与 functools 存在的原因。接着讲清 lambda 的边界与 PEP 8 建议,比较 map/filter 与推导式的取舍,介绍 itemgetter/attrgetter 替代 lambda,最后演示 reduce、singledispatch 与 functools.cache。
本节把函数讲透:从定义与文档字符串说起,拆解位置、默认、*args、仅关键字、**kwargs 五种参数形态,以及调用时用 * 和 ** 解包。重点讲清默认值只在定义时求值一次的陷阱,它和 3.3 节的可变默认参数一脉相承。随后用 LEGB 规则解释名字查找,说明 global 与 nonlocal 的用法并给出闭包示例,最后介绍类型注解、lru_cache 与 partial。
本节讲清 Python 的流程控制与推导式:先梳理哪些值为假,再拆解 if/elif/else、条件表达式、for 与 while、循环 else 子句、break 与 continue,以及 range、enumerate、zip(含 strict=True)。随后用列表、字典、集合、生成器四种推导式替代啰嗦循环,划清嵌套推导式边界,最后介绍 3.10 起的 match/case 模式匹配。
本节揭开 Python 对象模型的核心:变量只是绑定到对象的「名字」,而不是存放值的盒子。我们用 id、is 与 == 的真实实验讲清同一性与相等性的区别,实测小整数缓存与字符串驻留的边界,演示可变默认参数这个经典陷阱,对比 copy.copy 与 copy.deepcopy 在处理嵌套结构与循环引用时的差异,并说明函数传参为什么叫「传对象引用」。
本节系统讲解 Python 的四种内建容器:list、tuple、dict、set。先给出有序性、可变性与查找复杂度的对比表,再分别讲透列表的增删改查与带步长的切片、元组的解包与不可变的真实含义、字典的哈希要求与插入有序、集合的去重与交并差运算,并介绍 collections 中的 deque、Counter、defaultdict 与 namedtuple,最后用实测数据说明何时该换容器。
本节讲透 Python 的四大标量类型:int 的任意精度与位数限制、float 的 IEEE 754 二进制表示误差、bool 作为 int 子类的真相,以及 complex 复数。随后深入字符串的不可变性与 Unicode 码位和字节的区别,系统讲解 f-string 的对齐、精度、千分位与嵌套宽度等格式化语法,并对比 % 与 .format() 的适用场景,为后续容器与文本处理打好基础。
单文件脚本撑不起真实项目。本节先讲一个标准 Python 项目该长什么样,对比 src 布局与平铺布局的取舍,说明 tests、README、.gitignore 各放什么;再拆开 pyproject.toml 的三段结构(build-system、project、tool),讲清 requires-python 的含义;最后贴出 uv init 实际生成的文件内容,让你照着就能搭起项目骨架。
环境装好后,本节带你选编辑器并把解释器指向上节建好的虚拟环境;随后系统讲解 REPL 在 3.13 之后的改进(多行编辑、语法高亮、直接输入 exit 退出),以及 python -c、python -m、python -i 三种命令行用法;最后写出并实际运行第一个脚本,讲清 __name__ 判断这个惯用法的作用,并附命令行速查与常见报错排查清单。
本节从零安装 Python:先对比 macOS、Windows、Linux 三种平台各自的安装方式与坑,再解释 python 与 python3 的历史包袱;随后用一整段讲清「为什么必须用虚拟环境」,手把手创建、激活、退出 venv 并读懂 pyvenv.cfg;最后介绍 pyenv 管理多版本和 uv 这一新一代工具,用真实的 PATH 对比说明「激活」到底改了什么。
本节拆开 CPython 的执行模型:源码经过词法与语法分析生成 AST,再编译成字节码,最后由虚拟机执行。我们会用 ast 打印语法树、用 dis 真实反汇编一段代码,看到 3.14 的新字节码指令与常量折叠。随后对比 CPython、PyPy、实验性 JIT 与自由线程构建的关系,说明「Python 是解释型语言」并不准确。读完本节,你能用 dis 观察任何一段代码在解释器眼里的样子。
本节讲清 Python 历史上最痛的一次断代:2008 年 Python 3.0 为什么必须与 Python 2 决裂,print 语句、整数除法、str 与 bytes 这三处改动到底带来了什么,以及迁移的代价。随后介绍 PEP 602 确立的年度发布节奏与五年支持期,用一张表对比 3.12、3.13、3.14 的实际差异,并给出版本选择建议。读完本节,你能对「该用哪个版本」给出有依据的答案。
本节从 1989 年圣诞假期 Guido van Rossum 起意写一个「业余项目」讲起,梳理 Python 从 ABC 语言继承与拒绝了什么,以及 1991 年 0.9.0 首次发布的经过。随后逐条解读 import this 打印的「Python 之禅」,说明「可读性优先」「显式优于隐式」如何被翻译成今天的语言行为。读完本节,你能用设计哲学解释 Python 的许多反直觉之处。
深入探索 Python 异步编程的进阶方案:Trio 的结构化并发、Nursery 任务树、优雅取消机制,以及 AnyIO 如何弥合 Trio 与 asyncio 的生态鸿沟,提供兼容双后端的实战指南。
Python 数据工程全景:ETL 核心模式、Pandas 高级数据转换、Polars 高性能引擎、Pandera 数据校验、Airflow 与 Dagster 管道编排、增量处理与 CDC、数据质量监控,以及从 API 到数据仓库的完整实战。
深入掌握 Python 元编程核心机制:动态属性访问、描述符协议、元类、类装饰器、__slots__、Monkey Patching、内省工具、代码生成,以及 ORM / API / 插件系统的实战应用。
Python 数据分析核心技能:Pandas DataFrame 操作、数据清洗、聚合统计、时间序列分析,以及 Polars 高性能查询引擎的对比与迁移指南。
Celery 分布式任务队列实战:任务定义、定时调度(Beat)、结果存储、监控(Flower)、重试策略、死信队列与生产最佳实践。
使用 Python 集成 OpenAI / Claude / 国产大模型 API,掌握 Prompt Engineering、Function Calling、RAG 检索增强生成、LangChain / LlamaIndex 框架与 AI Agent 开发。
Python 数据库开发完全指南:SQLite 快速上手、PostgreSQL/MySQL 连接、SQLAlchemy ORM 模型定义与查询、asyncpg 异步数据库访问、Alembic 迁移工具。从简单脚本到生产级数据库应用的全栈实践。
Python 网络编程从底层到应用层:socket TCP/UDP 编程、HTTP 客户端(requests/httpx/urllib)、简易 Web 服务器、WebSocket 实时通信。包含完整可运行代码示例和常见问题排查。