从“会用函数”到“懂函数原理”的跨越
很多 Python 学习者卡在装饰器,本质不是装饰器难,而是对函数内部机制的理解是碎片化的。你写代码时知道 def、return、pass 怎么写,但当参数个数不确定、变量作用域冲突、或者需要给函数“穿外套”时,往往靠背模板,换场景就懵。这门课解决的核心问题,就是把 Python 函数的底层原理拆碎讲透,帮你补齐从“语法记忆”到“机制理解”的能力缺口。
适合有一定 Python 基础、正在备考或准备转岗的同学。如果你能写出简单的函数,但面对 *args/**kwargs、闭包、作用域链(LEGB)时反应模糊,或者看过装饰器却不知道为什么这样写,这门课正是为你设计的。它不教你 Hello World,而是深入函数作为一等公民的每一个细节。
关键模块与学习路径建议
课程内容由浅入深,建议按以下顺序攻克:
- 参数体系(2-1 至 2-4):这是基础中的基础。位置参数、关键字参数是常规操作,但默认参数陷阱(可变对象作为默认值)和参数解构(*args/**kwargs 的实质)是高频考点和常见 bug 来源。务必动手测试默认值在多次调用时的内存变化。
- 作用域与命名空间(4-1 至 4-2):global 和 nonlocal 的区别是重中之重。不理解 LEGB 查找规则,就无法真正理解闭包和装饰器的变量访问机制。建议画出作用域链示意图,模拟变量查找过程。
- 高阶函数与匿名函数(5-1、7-1):lambda 不仅是简洁写法,更是高阶函数(如 map、filter、sorted 的 key 参数)的搭档。理解“函数可以作为参数传递和返回”,是进入装饰器门槛的关键一步。
- 生成器(6-1):理解 yield 与 return 的本质区别,掌握惰性计算思想,这对处理大数据集和优化性能至关重要。
- 装饰器(8-1):这是课程的压轴难点。通过剖析装饰器的定义和原理,你将明白它本质上是一个返回函数的高阶函数。结合 functools.wraps 的使用,才能真正写出健壮的装饰器。
学完能独立做什么及练习配合
完成本课后,你将能够:清晰解释 Python 函数的参数传递机制(引用传递 vs 值传递的误区),独立排查因作用域混淆导致的变量污染问题,熟练运用高阶函数和 lambda 表达式简化代码,并最终能手写常用装饰器(如日志记录、性能计时、权限校验等),而非只会复制粘贴。
资料包中的课后练习(如移除列表中某元素)看似简单,实则考察你对函数副作用、返回值与原地修改的区别理解。建议边看视频边在 IDE 中亲手敲代码,特别要尝试修改示例中的参数顺序、作用域关键字,观察报错和结果变化。不要只看不练,装饰器的原理只有在你自己调试过闭包错误后才能真正内化。记住,理解原理是为了在遇到异常时能快速定位,而不是为了炫技。这份笔记助你构建扎实的函数内功。
课程目录
1-1 [函数概览] 函数定义 (02:12) 1-2 [函数概览] 函数的调用 (50) 2-1 [函数的参数定义及高阶使用] 位置参数和关键字参数 (05:45) 2-2 [函数的参数定义及高阶使用] 默认参数 (04:25) 2-3 [函数的参数定义及高阶使用] 可变参数 (08:39) 2-4 [函数的参数定义及高阶使用] 参数解构 (17:04) 3-1 [函数的返回值] 函数的返回值 (07:36) 4-1 [函数的作用域] global全局作用域 (32:53) 4-2 [函数的作用域] nonlocal局部作用域 (07:20) 5-1 [匿名函数] 匿名函数 (09:40) 6-1 [生成器] 生成器 (13:05) 7-1 [高阶函数] 高阶函数 (07:51) 8-1 [装饰器] 装饰器的定义及原理剖析 (40:27) 9-1 [课后练习] 移除列表中的重复元素,并保持新列表和原列表的顺序一致 (17:10) 9-2 [课后练习] 统计文本中各单词出现的次数 (11:01) 9-3 [课后练习] 扁平化字典 (37:25)





