1、带参数的装饰器

FLAGE = Truedef timmer_out(flage):def timmer(f):def inner(*args, **kwargs):if FLAGE:print("before")ret = f(*args, **kwargs)print("after")return retelse:ret = f(*args, **kwargs)return retreturn innerreturn timmer@timmer_out(FLAGE)
def func1(s):print("in the func1")return s@timmer_out(FLAGE)
def func2():print("in the func2")ret = func1(111111)
print(ret)
func2()>>>
before
in the func1
after
111111
before
in the func2
after

对比将FLAGE设置为False:

FLAGE = Falsedef timmer_out(flage):def timmer(f):def inner(*args, **kwargs):if FLAGE:print("before")ret = f(*args, **kwargs)print("after")return retelse:ret = f(*args, **kwargs)return retreturn innerreturn timmer@timmer_out(FLAGE)
def func1(s):print("in the func1")return s@timmer_out(FLAGE)
def func2():print("in the func2")ret = func1(111111)
print(ret)
func2()
>>>
in the func1
111111
in the func2

2、多个装饰器装饰一个函数

可以按照俄罗斯套娃来理解多个装饰器装饰一个函数,函数寻找装饰器是按照就近原则的

def wrapper1(f):def inner1(*args, **kwargs):print("before, in the inner1")ret = f(*args, **kwargs)print("after, in the inner1")return retreturn inner1def wrapper2(f):def inner2(*args, **kwargs):print("before, in the inner2")ret = f(*args, **kwargs)print("after, in the inner2")return retreturn inner2@wrapper1
@wrapper2
def func():print("in the func")func()
>>>
before, in the inner1
before, in the inner2
in the func
after, in the inner2
after, in the inner1

No7.装饰器的进阶相关推荐

  1. python进阶装饰器_Python进阶: 通过实例详解装饰器(附代码)

    Python中的装饰器有很多用处,比如输出日志.参数检查.代理设置.计数计时.结果缓存等等.本文就通过几个装饰器例子,详细解释一下Python中装饰器的用法.一步步从简到繁学习装饰器用法 其他一些装饰 ...

  2. day12装饰器进阶

    1.复习 # 复习 # 讲作业 # 装饰器的进阶# functools.wraps# 带参数的装饰器# 多个装饰器装饰同一个函数 # 周末的作业# 文件操作# 字符串处理# 输入输出# 流程控制# 装 ...

  3. Python的装饰器

    详解Python的装饰器 本文源码 https://github.com/tobyqin/python_decorator Python中的装饰器是你进入Python大门的一道坎,不管你跨不跨过去它都 ...

  4. day11 - 15(装饰器、生成器、迭代器、内置函数、推导式)

    day11:装饰器(装饰器形成.装饰器作用.@语法糖.原则.固定模式) 装饰器形成:最简单的.有返回值的.有一个参数的.万能参数 函数起的作用:装饰器用于在已经完成的函数前后增加功能 语法糖:使代码变 ...

  5. python中的闭包与装饰器教程

    一.闭包 闭包相当于函数中,嵌套另一个函数,并返回. 代码如下: def func(name): # 定义外层函数def inner_func(age): # 内层函数print('name: ', ...

  6. python 运行时间 装饰器_python 装饰器统计某个函数的运行时间

    import datetime def count_time(func): def int_time(*args, **kwargs): start_time = datetime.datetime. ...

  7. 老司机教你 5 分钟读懂 Python 装饰器

    1. 写在前面 在介绍python装饰器之前,首先介绍python的一个概念,对象.在python里,所有的一切皆对象.常用的python对象有整型对象,浮点型对象,字符串对象,列表对象,元组对象,字 ...

  8. 《是碰巧还是执着?python所阅读的每一场知识点,唯一的共同点就是——参赛选手中,有详解Python的装饰器!》

    Python中的装饰器是你进入Python大门的一道坎,不管你跨不跨过去它都在那里. 为什么需要装饰器 我们假设你的程序实现了say_hello()和say_goodbye()两个函数. def sa ...

  9. 详解Python的装饰器

    详解Python的装饰器 Python中的装饰器是你进入Python大门的一道坎,不管你跨不跨过去它都在那里. 为什么需要装饰器 我们假设你的程序实现了say_hello()和say_goodbye( ...

最新文章

  1. ant table表格整行点击事件并获取当前行的数据
  2. 谷歌如何评估产品经理?
  3. 手机息屏后停止_手机息屏还能这样玩?华为这几个隐藏小功能快学起来
  4. 用户进程与内核进程是一一对应的吗_用户线程、内核线程和轻量级进程
  5. 用于构建集成式桌面应用程序的新指南和新工具(转载于MSDN)
  6. VoxelNet: 基于点云的三维空间信息逐层次学习网络
  7. android使用的图片压缩格式,Android 之使用libjpeg压缩图片
  8. oracle 客户端监听文件配置
  9. set注意点map遍历
  10. Edittext焦点处理
  11. 秋季海报设计元素|水彩手绘纹理植物素材,从人群中脱颖而出。
  12. (整理)REHL6.5_Yum安装Reids
  13. 30个你 “ 不可能全部会做 ” 的javascript题目
  14. 《社会调查数据管理——基于Stata 14管理CGSS数据》一1.3 数据管理工作主体不明...
  15. Java短信验证码-互亿无线
  16. ET Reporter
  17. C#批量发送短信操作
  18. 46家中外知名企业面试题目
  19. 永恒之蓝漏洞攻击完整步骤
  20. Mac安装brew 及安装报错的解决办法【已解决】

热门文章

  1. 函数模板、类模板(含模板特化)
  2. 最小费用最大流(详解+模板)
  3. Linux SPI驱动框架(2)——控制器驱动层
  4. ListView动态刷新
  5. so-vits-svc3.0 中文详细安装、训练、推理使用教程
  6. 聚焦低代码SaaS云服务,让企业轻松办公!
  7. named:域名服务器部署及配置
  8. php new object delete,DeleteObject()函数
  9. performance性能监控
  10. 2017-12-1工作日志--云信音视频通话SDK开启美颜效果