📄 函数说明文档:给函数写"说明书"
我们平时写代码,有时候自己都忘了某个函数是干什么的。这时候,函数说明文档就派上用场了!
💡 简单说:它是写在函数第一行的绿色注释,用来告诉别人这个函数是用来干嘛的。
✅ 怎么写?
python
def a():
'''
我是函数的说明文档
这是函数的注释,我可以用它来介绍当前函数的作用
'''
print('我是函数a')
- 用三个单引号
'''
开头和结尾。 - 写完后按回车,就会变成绿色的注释。
- 它只能写在函数里面,不能乱放。
- 调用函数时,别人能看到你的说明,非常方便!
🌟 好处:相当于给函数贴了个标签,以后你或同事看到就知道这个函数是做什么的,不用翻代码猜。
🔁 函数嵌套:把小盒子装进大盒子里
想象一下,你在家里(外层函数)有个房间(内部函数),房间里还有个小柜子(更小的函数)。这就是函数嵌套!
python
def func():
print('我是函数func')
def func1():
print('我是func里面的func1')
def func2():
print('我是func里面的func2')
return func2 # 把内部函数"拿"出来使用
func1
和func2
是"内部函数",只能在func
里用。- 但你可以通过
return func2
把它"拿出来",让外面也能调用。 - 不拿出来?那别人根本不知道它存在,等于白写了。
🛠️ 实际用途:把一些辅助功能藏起来,只暴露你需要的部分,像"黑箱操作"。
🌍 作用域:变量的"家"在哪里?
变量也有自己的"地盘"------叫作用域。
举个例子:
python
a = 10 # 全局变量(公共区域)
def item():
print('我是item') # 可以访问全局变量a吗?
global a # 告诉Python:我要改全局的a
a = 50 # 现在a变成了50,原来的10被覆盖了
- 全局变量 :在函数外面定义的,比如
a = 10
,整个程序都能用。 - 局部变量:在函数里定义的,只能在函数内使用。
- 如果你想在函数里修改全局变量,必须用
global
关键字声明!
🧠 比喻:全局变量是小区公告栏,谁都能看;局部变量是你家门牌号,只有你自己能改。
🧩 闭包:一个"会记事"的函数
什么是闭包?别急,听我打个比方:
🚗 闭包是个车,大家都能用;装饰器是车钥匙,一拧就能启动。
闭包能干嘛?
python
def func(x): # 外层函数
def func1(): # 内部函数
print('添加功能')
x() # 执行传进来的函数
return func1 # 返回内部函数
func
是个"容器",它接收一个函数x
。- 它内部定义了一个新函数
func1
,这个函数会先打印"添加功能",然后再运行x()
。 - 最后返回
func1
,这样别人就可以调用它。
✅ 闭包的本质:一个函数 + 记住外部环境的数据。它像一个"功能包",可以重复使用。
✨ 装饰器:给函数"加特效"
现在我们终于到了重头戏------装饰器!
💡 装饰器就是一种"快捷方式",让你在不改原函数代码的情况下,给它加上新功能。
举个栗子:
python
@func # 这就是装饰器!相当于自动调用了 func(a)
def a():
print('我是函数a')
这行代码的意思是:
- 把函数
a
传给func
(闭包); func
会先执行"添加功能";- 然后再执行
a()
的内容; - 整个过程不需要你手动调用,自动完成!
🎯 好处:功能写一次,多个函数都能用。比如日志记录、权限校验、性能监控......都不用改源码!
🧩 类比:就像你买了一辆新车(函数),想加个导航系统(功能),直接插个U盘(装饰器)就行,不用拆车!
💡 匿名函数:没有名字的"临时工"
有时候你只需要一个简单的功能,不想专门起名字,那就用匿名函数(lambda)。
python
func = lambda: print('我是匿名函数')
func() # 可以正常调用
- 使用
lambda
关键词创建。 - 只能写一行代码,适合简单逻辑。
- 通常用于
map
,filter
,sorted
等函数式编程场景。 - ⚠️ 注意:虽然叫"匿名",但它还是可以被赋值给变量使用的。
✅ 总结:一张图读懂核心概念
概念 | 通俗解释 | 用途 |
---|---|---|
说明文档 | 给函数写说明书 | 方便阅读和维护 |
函数嵌套 | 小盒子装进大盒子里 | 隐藏内部逻辑 |
作用域 | 变量的"家" | 控制变量可见性 |
闭包 | 会记事的函数 | 存储状态和功能 |
装饰器 | 给函数加特效 | 快速扩展功能 |
匿名函数 | 没名字的小助手 | 简单任务快速处理 |
📢 写在最后
这些知识点听起来很抽象,但其实它们都是为了解决实际问题而生的:
- 闭包 → 让函数"记得"之前的状态;
- 装饰器 → 让你"一键升级"函数功能;
- 作用域 → 避免变量混乱;
- 说明文档 → 让代码更有温度。
🌱 初学者可能一时看不懂,没关系! 就像开车,一开始只知道踩油门,后来才明白离合、档位、转向灯......随着项目增多,你会自然理解这些"高级技巧"。