手把手教你使用python复杂一点点的装饰器
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 | #只要@deco后面跟括号,都要 先传装饰器参数,返回 再传目标待装饰函数,返回 传目标函数的参数 #这个参数可以是类 def deco(arg): #装饰器的函数在这里传 print ( '0' ,arg) def _deco(func): #装饰函数在这里传 print ( '1' ,arg) def __deco(): #装饰函数的参数在这里传 print ( "所装饰函数 %s 调用前 [%s]." % (func.__name__, arg)) func() print ( " 所装饰函数 %s 调用后 [%s]." % (func.__name__, arg)) return 1 return __deco return _deco #@deco表示调用 deco, #且每当调用接下来定义的函数 myfunc,则为调用 deco 返回的函数 func #与前面不同的地方在于,这里 @deco后面跟了(),是调用状态, #所以会直接传参、调用deco,并调用 函数deco返回的函数_deco #且每当调用接下来定义的函数 myfunc,则为 # 调用 传装饰器参数的deco所返回的 传所装饰函数的_deco所返回的__deco @deco ( "装饰器参数" ) def myfunc(): print ( " 这一句出来了证明函数 myfunc 调用了" ) return 'ok' #这里没用了,在deco中有用而已 ''' 这里0 1都打印出来了 ''' @deco ( "装饰器参数er" ) def myfunc2(): print ( " 这一句出来了证明函数 2 调用了" ) myfunc() print ( '\n' ) a = myfunc2() #1 返回的是deco返回的1 ''' 装饰器呢,测试的时候,例如测试函数性能的时候经常用。 写一些工具的时候,例如协服务程序的定时器的时候也经常用。 总之就有点类似 用在所写代码上的 一些工具 ''' |
作者:头条号 / 趣味Python
链接:http://toutiao.com/i6313766939822916098/
来源:头条号(今日头条旗下创作平台)
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
分类:
Python - 基础
标签:
Python
【推荐】博客园的心动:当一群程序员决定开源共建一个真诚相亲平台
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】Flutter适配HarmonyOS 5知识地图,实战解析+高频避坑指南
【推荐】开源 Linux 服务器运维管理面板 1Panel V2 版本正式发布
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· tomcat为什么假死了
· 聊一聊 Linux 上对函数进行 hook 的两种方式
· C# 锁机制全景与高效实践:从 Monitor 到 .NET 9 全新 Lock
· 一则复杂 SQL 改写后有感
· golang中写个字符串遍历谁不会?且看我如何提升 50 倍
· 完成微博外链备案,微博中直接可以打开园子的链接
· 推荐 3 种 .NET Windows 桌面应用程序自动更新解决方案
· .NET 10 支持Linux/Unix 的Shebang(Hashbang)
· 一个基于 .NET 开源、模块化 AI 图像生成 Web 用户界面
· 上周热点回顾(6.9-6.15)