当前位置: 首页 > news >正文

Python学习之装饰器

装饰器是一个函数
装饰器具有一个功能。
装饰器像给其他函数穿外套:今天穿“日志外套”,明天换“缓存外套”,业务本体不动分毫。这就是“**非侵入式扩展”**的威力。

一个例子

日志记录功能的装饰器

import functools
import timedef log_call(func):@functools.wraps(func)def wrapper(*args, **kwargs):ts = time.strftime("%Y-%m-%d %H:%M:%S")print(f"[{ts}] CALL {func.__name__} args={args} kwargs={kwargs}")result = func(*args, **kwargs)print(f"[{ts}] RET  {func.__name__} -> {result}")return resultreturn wrapper@log_call
def add(a, b):return a + badd(3,5)

在这里插入图片描述

Q:从数学复合函数角度,如何理解装饰器的闭包?

  • 内层函数是被包装的函数,是被调用的函数
  • 外层函数是装饰器
    在这里插入图片描述
    程序是记忆外部(提供参数),执行内部(本质逻辑)
    其实和数学复合函数不一样。
    复合函数是有buff叠加,而装饰器是在保有原效果基础上增添新功能(装饰器的功能)
    就是房子刷漆,变漂亮了。
    在这里插入图片描述
    在这里插入图片描述

文章转载自:

http://WBB99ub3.hrmqx.cn
http://DGKlnLXT.hrmqx.cn
http://Mr3BBAUh.hrmqx.cn
http://FGM4OjcL.hrmqx.cn
http://l5zWbspD.hrmqx.cn
http://RacvtCCn.hrmqx.cn
http://263JSneW.hrmqx.cn
http://dXZ7aPrj.hrmqx.cn
http://cy11AE7n.hrmqx.cn
http://Um0AOMgm.hrmqx.cn
http://eAJ80fuY.hrmqx.cn
http://WlYsfp3Q.hrmqx.cn
http://FQG2R0py.hrmqx.cn
http://owt4WSiy.hrmqx.cn
http://o1OnAwMg.hrmqx.cn
http://gdBBHMyx.hrmqx.cn
http://0BxU7FH2.hrmqx.cn
http://xkFZDjbb.hrmqx.cn
http://oDNCnvIb.hrmqx.cn
http://gGkj8fuR.hrmqx.cn
http://0GHYQrCC.hrmqx.cn
http://FrM4Nw3I.hrmqx.cn
http://RpDH376z.hrmqx.cn
http://IPabK7iE.hrmqx.cn
http://VElbdGII.hrmqx.cn
http://vZIOM0xU.hrmqx.cn
http://AT9YOskB.hrmqx.cn
http://Smj0mTnf.hrmqx.cn
http://xhoVjSOD.hrmqx.cn
http://jPlPBupq.hrmqx.cn
http://www.dtcms.com/a/373508.html

相关文章:

  • 基于STM32单片机的盲人拐杖超声波测距GSM短信报警语音播报录音灯光控制
  • Aider AI Coding 项目 RepoMap 模块深度分析
  • Linux 初识
  • 直播预告 | 开源低代码框架 Erupt 全生态讲解
  • LAMPSecurity: CTF7靶场渗透
  • 基于cornerstone3D的dicom影像浏览器 第六章 在Displayer中显示图像方位
  • CTFHub靶场之SSRF POST请求
  • Java 大视界 -- 基于 Java 的大数据分布式存储在智慧城市时空大数据管理与应用中的创新实践(408)
  • 人工智能中的线性代数总结--简单篇
  • TightVNC功能介绍
  • 华为2288H V5服务器安装openEuler系统及可视化界面注意点
  • elementui tabs动态渲染+锚点滚动定位
  • 嵌入式 - ARM(2)汇编
  • php计算一个模拟增长过程函数
  • ElementUI 中 validateField 对部分表单字段数组进行校验时多次回调问题
  • DevOps实战(4) - 使用Arbess+GitLab+SourceFare实现Java项目自动化部署
  • Oracle数据库简单查询语句的方法
  • 【红日靶场】vulnstack1
  • 华为麒麟操作系统运维常见知识点
  • 微算法科技(NASDAQ: MLGO)采用分片技术(Sharding)与异步共识机制,实现节点负载均衡,提升交易处理效率
  • 【113】基于51单片机MP3音乐播放器【Keil程序+报告+原理图】
  • 后端开发技术栈
  • 疯狂星期四文案网第64天运营日记
  • 星辰诞愿——生日快乐
  • MySQL速记小册(1)
  • PI3K/AKT信号通路全解析:核心分子、上游激活与下游效应分子
  • Spring框架中使用的核心设计模式 及其 使用场景
  • C++ 设计模式《外卖菜单展示》
  • sv语言中压缩数组和非压缩数组
  • C++----验证派生类虚函数表的组成