day32

@浙大疏锦行

函数专题2:装饰器

  1. 装饰器的思想

不修改原函数代码、不改变原函数调用方式,给函数新增功能(如日志、统计、校验等),实现代码复用最大化。

装饰器是 "函数的函数"------ 接收原函数为参数,返回 "增强版" 新函数,间接扩展原函数功能。

  1. 函数的装饰器写法

基础写法为 "嵌套函数 + 返回函数",分为 "定义装饰器" 和 "使用装饰器" 两步:

(1)定义装饰器:

定义装饰器函数,接收原函数作为参数。

在装饰器函数内部定义一个 "内部函数",用于封装 "新增功能 + 原函数调用"。

内部函数通过*args, **kwargs接收任意参数,保证适配原函数的所有传参方式。

装饰器函数最终返回内部函数,替代原函数。

(2)使用装饰器:

通过@装饰器函数名的语法糖,直接将装饰器作用于目标函数(等价于 "原函数 = 装饰器函数名 (原函数)")。

  1. 注意内部函数的返回值

在内部函数中,先调用原函数并保存其返回值,最后将该返回值作为内部函数的返回值。

作业:

相关推荐
CSDN_Colinw9 分钟前
Python GUI开发:Tkinter入门教程
jvm·数据库·python
chase。15 分钟前
Python包构建工具完全指南:python -m build 使用详解
开发语言·chrome·python
xin_yao_xin20 分钟前
PaddleOCR系列——《文本检测、文本识别》模型训练
人工智能·python·paddlepaddle·ppocr
2401_8331977320 分钟前
用Python制作一个文字冒险游戏
jvm·数据库·python
万粉变现经纪人38 分钟前
如何解决 pip install cx_Oracle 报错 未找到 Oracle Instant Client 问题
数据库·python·mysql·oracle·pycharm·bug·pip
sw12138938 分钟前
使用Plotly创建交互式图表
jvm·数据库·python
2301_8101609541 分钟前
如何为开源Python项目做贡献?
jvm·数据库·python
若惜41 分钟前
selenium自动化测试web自动化测试 框架封装Pom
前端·python·selenium
weixin_457760001 小时前
基于pytorch实现LPR模型车牌识别
人工智能·pytorch·python·深度学习·lpr
Zaly.1 小时前
【Python刷题】LeetCode 3567 子矩阵的最小绝对差
python·leetcode·矩阵