函数专题2:装饰器
- 装饰器的思想
不修改原函数代码、不改变原函数调用方式,给函数新增功能(如日志、统计、校验等),实现代码复用最大化。
装饰器是 "函数的函数"------ 接收原函数为参数,返回 "增强版" 新函数,间接扩展原函数功能。
- 函数的装饰器写法
基础写法为 "嵌套函数 + 返回函数",分为 "定义装饰器" 和 "使用装饰器" 两步:
(1)定义装饰器:
定义装饰器函数,接收原函数作为参数。
在装饰器函数内部定义一个 "内部函数",用于封装 "新增功能 + 原函数调用"。
内部函数通过*args, **kwargs接收任意参数,保证适配原函数的所有传参方式。
装饰器函数最终返回内部函数,替代原函数。
(2)使用装饰器:
通过@装饰器函数名的语法糖,直接将装饰器作用于目标函数(等价于 "原函数 = 装饰器函数名 (原函数)")。
- 注意内部函数的返回值
在内部函数中,先调用原函数并保存其返回值,最后将该返回值作为内部函数的返回值。
作业:
