CodeRoadMap
首页路线题库资源库文章社区
CodeRoadMap

程序员的学习成长路线图。内容免费开放,登录后可同步路线图与课时进度。

由 程序员柏风 独立维护 · 关于作者

学习

  • 路线图
  • 课程
  • 面试题
  • 文章
  • 我

更多

  • 资源
  • 社区
  • 关于作者
  • 内容说明

© 2026 CodeRoadMap

津ICP备2026012044号-1·津公网安备12011002026155号·coderoadmap@126.com
Python 进阶/课时/函数式特性
RawBlame
课时目录12 节

Python 进阶

  1. 01Python 进阶地图
  2. 02类型与数据结构
  3. 03OOP 深入
  4. 04函数式特性
  5. 05并发与异步
  6. 06Web 框架
  7. 07包管理与虚拟环境
  8. 08静态类型与校验
  9. 09测试框架
  10. 10代码质量工具
  11. 11算法与数据结构
  12. 12综合练习

函数式特性

lambdas、decorators、comprehensions、iterators、context-manager。

30 分钟

函数式编程工具

Python 不是纯函数式语言,但 map/filter/reduce、生成器、functools、itertools` 能写出简洁且内存友好的数据处理管线。基础函数见 python-fundamentals;Agent 链式调用与函数组合思想相通,参考 ai-agents-essentials;/roadmaps/python。

学习目标

  • 熟练使用生成器与 yield from 处理大文件/流式数据
  • 用 functools.partial、lru_cache 复用与缓存
  • 用 itertools 组合迭代器,避免中间 list

生成器

from pathlib import Path

def iter_lesson_lines(draft_dir: Path):
    for path in sorted(draft_dir.glob("*.md")):
        with path.open(encoding="utf-8") as f:
            for line in f:
                yield path.name, line.rstrip("\n")

# 内存恒定,不必一次读入全部文件
for name, line in iter_lesson_lines(Path("drafts")):
    if line.startswith("#"):
        print(name, line)

functools

from functools import partial, lru_cache

def greet(greeting: str, name: str) -> str:
    return f"{greeting}, {name}"

hello = partial(greet, "Hello")
print(hello("CodeRoadMap"))

@lru_cache(maxsize=128)
def fib(n: int) -> int:
    if n < 2:
        return n
    return fib(n - 1) + fib(n - 2)

itertools 组合

import itertools

tags = ["python", "async", "typing"]
levels = ["intro", "advanced"]

for tag, level in itertools.product(tags, levels):
    print(f"{tag}-{level}")

# 滑动窗口
data = [1, 2, 3, 4, 5]
windows = list(itertools.pairwise(data))  # [(1,2), (2,3), ...]

列表推导可读性高;数据量大或需惰性求值时优先生成器。

练习

  • 用生成器统计目录下所有 .md 的总行数,不一次性加载全文
  • 用 functools.reduce 求列表乘积
  • 用 itertools.groupby 按首字母分组字符串列表

小结

函数式工具让数据流清晰、内存可控。 下一课 asyncio 把「惰性迭代」思想延伸到 I/O 并发。

加载本节练习…
← 上一课OOP 深入
下一课 →并发与异步