No7.装饰器的进阶
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.装饰器的进阶相关推荐
- python进阶装饰器_Python进阶: 通过实例详解装饰器(附代码)
Python中的装饰器有很多用处,比如输出日志.参数检查.代理设置.计数计时.结果缓存等等.本文就通过几个装饰器例子,详细解释一下Python中装饰器的用法.一步步从简到繁学习装饰器用法 其他一些装饰 ...
- day12装饰器进阶
1.复习 # 复习 # 讲作业 # 装饰器的进阶# functools.wraps# 带参数的装饰器# 多个装饰器装饰同一个函数 # 周末的作业# 文件操作# 字符串处理# 输入输出# 流程控制# 装 ...
- Python的装饰器
详解Python的装饰器 本文源码 https://github.com/tobyqin/python_decorator Python中的装饰器是你进入Python大门的一道坎,不管你跨不跨过去它都 ...
- day11 - 15(装饰器、生成器、迭代器、内置函数、推导式)
day11:装饰器(装饰器形成.装饰器作用.@语法糖.原则.固定模式) 装饰器形成:最简单的.有返回值的.有一个参数的.万能参数 函数起的作用:装饰器用于在已经完成的函数前后增加功能 语法糖:使代码变 ...
- python中的闭包与装饰器教程
一.闭包 闭包相当于函数中,嵌套另一个函数,并返回. 代码如下: def func(name): # 定义外层函数def inner_func(age): # 内层函数print('name: ', ...
- python 运行时间 装饰器_python 装饰器统计某个函数的运行时间
import datetime def count_time(func): def int_time(*args, **kwargs): start_time = datetime.datetime. ...
- 老司机教你 5 分钟读懂 Python 装饰器
1. 写在前面 在介绍python装饰器之前,首先介绍python的一个概念,对象.在python里,所有的一切皆对象.常用的python对象有整型对象,浮点型对象,字符串对象,列表对象,元组对象,字 ...
- 《是碰巧还是执着?python所阅读的每一场知识点,唯一的共同点就是——参赛选手中,有详解Python的装饰器!》
Python中的装饰器是你进入Python大门的一道坎,不管你跨不跨过去它都在那里. 为什么需要装饰器 我们假设你的程序实现了say_hello()和say_goodbye()两个函数. def sa ...
- 详解Python的装饰器
详解Python的装饰器 Python中的装饰器是你进入Python大门的一道坎,不管你跨不跨过去它都在那里. 为什么需要装饰器 我们假设你的程序实现了say_hello()和say_goodbye( ...
最新文章
- ant table表格整行点击事件并获取当前行的数据
- 谷歌如何评估产品经理?
- 手机息屏后停止_手机息屏还能这样玩?华为这几个隐藏小功能快学起来
- 用户进程与内核进程是一一对应的吗_用户线程、内核线程和轻量级进程
- 用于构建集成式桌面应用程序的新指南和新工具(转载于MSDN)
- VoxelNet: 基于点云的三维空间信息逐层次学习网络
- android使用的图片压缩格式,Android 之使用libjpeg压缩图片
- oracle 客户端监听文件配置
- set注意点map遍历
- Edittext焦点处理
- 秋季海报设计元素|水彩手绘纹理植物素材,从人群中脱颖而出。
- (整理)REHL6.5_Yum安装Reids
- 30个你 “ 不可能全部会做 ” 的javascript题目
- 《社会调查数据管理——基于Stata 14管理CGSS数据》一1.3 数据管理工作主体不明...
- Java短信验证码-互亿无线
- ET Reporter
- C#批量发送短信操作
- 46家中外知名企业面试题目
- 永恒之蓝漏洞攻击完整步骤
- Mac安装brew 及安装报错的解决办法【已解决】