装饰器
1、什么是装饰器?
所谓装饰器,其实就是自己定义的函数,而这个函数的基础是基于闭包的。
2、装饰器的作用又是什么呢?
之所以要有装饰器就是为了,在不改变原来的函数调用的情况下,去添加一些功能。比如公司的APP突然要加某个功能,但是时间很紧,根本没有时间去重新写代码,这时候就需要在原代码上写一个装饰器添加功能,然后将这个装饰器通过@+装饰器名写在原函数上。这样就可以既不改变原来函数的调用,又能添加新的功能了,作用大大滴。
那么我们接下来写一个装饰器!
def fun(fn): def inner(*args,**kwargs): print('我是一个装饰器') ret = fn(*args,**kwargs) return ret return inner @fun #此时@fun 相当于j将test作为参数传给fun(),得到inner函数,然后重新将inner赋 值成test。实际上就是执行了这个操作test=fun(test) def test(request): print('我是test') return "我是谁" test(1) #此时这个test就是inner重新赋值成的test,目的就是为了不改变原来的调用方式 # 如果被装饰的函数有返回值,就需要在装饰其中用变量接收,并返回这样才能将返回值打印出来,如果不在装饰器中接收就会返回一个None
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· .NET Core GC压缩(compact_phase)底层原理浅谈
· 现代计算机视觉入门之:什么是图片特征编码
· .NET 9 new features-C#13新的锁类型和语义
· Linux系统下SQL Server数据库镜像配置全流程详解
· 现代计算机视觉入门之:什么是视频
· Sdcb Chats 技术博客:数据库 ID 选型的曲折之路 - 从 Guid 到自增 ID,再到
· 99%的人不知道,桥接模式失败的真正原因是它!
· .NET Core GC压缩(compact_phase)底层原理浅谈
· Winform-耗时操作导致界面渲染滞后
· Phi小模型开发教程:C#使用本地模型Phi视觉模型分析图像,实现图片分类、搜索等功能