Python函数详解:四步吃透定义、参数、闭包与作用域规则
本文系统梳理Python函数从基础定义到高阶特性的完整知识体系,涵盖函数定义、参数传递、作用域规则、闭包、LEGB法则等核心内容,助你构建扎实的函数编程能力。
欢迎您在底部评论区留言,一起交流~
函数(I):定义、调用与返回值
1. 函数定义语法
使用
def 关键字定义函数:✅ 函数名应使用小写字母和下划线,符合PEP8规范。
2. 无参函数示例
3. 空函数与 pass 语句
有时需要先定义函数结构,后续再实现逻辑,可使用
pass 占位:4. 返回值机制
- 使用
return返回结果
- 若无
return,默认返回None
return后的代码不会执行
5. 多返回值(元组打包)
Python支持返回多个值,实际是返回一个元组:
函数(II):参数详解与灵活传参
1. 参数类型概览
类型 | 说明 |
位置参数 | 按位置顺序传入 |
关键字参数 | 通过参数名指定值 |
默认参数 | 定义时指定默认值 |
可变位置参数 | *args 接收任意位置参数 |
可变关键字参数 | **kwargs 接收任意关键字参数 |
2. 位置参数 vs 关键字参数
3. 默认参数
定义时赋默认值,调用时可省略:
✅ 安全写法:
4. 参数顺序规则
位置参数 → 默认参数 →
*args → 关键字参数 → **kwargs5. 强制位置参数与强制关键字参数(Python 3.8+)
/前的参数必须按位置传递
- 后的参数必须按关键字传递
6. 可变参数 args 和 *kwargs
args:接收任意数量的位置参数 → 元组
*kwargs:接收任意数量的关键字参数 → 字典
7. 参数解包
- 解包序列(列表/元组)→ 位置参数
*解包字典 → 关键字参数
函数(III):嵌套、作用域与闭包
1. 函数嵌套
函数内部可定义函数(内部函数/嵌套函数):
2. 变量作用域基础
- 局部变量:函数内部定义,仅在函数内有效
- 全局变量:函数外部定义,全局有效
3. 闭包(Closure)
闭包 = 内部函数 + 外部函数变量引用
✅ 闭包三大条件:
- 存在嵌套函数
- 内部函数引用外部函数变量
- 外部函数返回内部函数
4. nonlocal 关键字
用于在嵌套函数中修改外部函数的局部变量:
❗ 若不用 nonlocal,funB 中的 x = 880 会创建新的局部变量,不影响外部。
函数(IV):LEGB规则与变量控制
1. LEGB 规则详解
Python查找变量的顺序:
层级 | 名称 | 说明 |
L | Local | 局部作用域(当前函数) |
E | Enclosing | 闭包作用域(外层函数) |
G | Global | 全局作用域(模块级) |
B | Built-in | 内置作用域(如 len, str) |
查找顺序:L → E → G → B
2. global 关键字
用于在函数内修改全局变量:
⚠️ 避免滥用 global,易导致代码耦合度高、难以调试。
3. 作用域陷阱示例
✅ 最佳实践:避免使用内置函数名作为变量名!
4. 作用域与内存地址
局部变量会创建新对象:
📌 总结与最佳实践
核心知识图谱
最佳实践清单
- 函数命名:使用动词+名词,如
calculate_sum()
- 默认参数:避免可变对象,用
None初始化
- 返回值:明确返回类型,避免隐式
None
- 作用域:优先使用局部变量,减少
global使用
- 参数设计:
- 位置参数用于必需值
- 关键字参数用于可选配置
args/**kwargs用于扩展性接口
- 闭包应用:用于装饰器、回调函数、状态保持
- LEGB原则:理解变量查找顺序,避免命名冲突
常见错误避坑
掌握这四部分知识,你已具备Python函数编程的核心能力!建议通过实际项目(如数据处理、Web开发、自动化脚本)巩固这些概念,逐步进阶到装饰器、生成器等高级主题。函数是Python的灵魂,精通函数=精通Python一半! 🐍
- 作者:神秘人
- 链接:https://blog.tianjiaji.top//url/273183c0-6139-808a-898c-e92aad73488c
- 声明:本文采用 CC BY-NC-SA 4.0 许可协议,转载请注明出处。










