python装饰器与闭包---装饰器
装饰器的作用:在不改变函数或者类的源代码基础上添加额外的功能
装饰器是一种设计模式,它的本质就是闭包,需要传入一个callable对象--(callable对象就是可调用对象函数或者类)
###装饰器装饰函数#####
例子:统计运行时间的装饰器
def deco(name):def runtime(func):print("this is runtime")@functools.wraps(func) #保留传递进来的函数的源数据,将他的源数据赋值给inner 源数据(函数名,函数注释等)def inner(*args,**kwargs):start=time.time()result = func(*args,**kwargs)end=time.time()print(f"函数执行花了{end -start}s")print(f"this is {func.__name__}")return resultreturn innerreturn runtime
@是装饰器修饰符 装饰器的装饰之后相当于 func = runtime(func)
func函数被装饰器装饰过后就不是原来的func函数了是runtime的内嵌函数也就是这里的inner
一个函数可以应用多个装饰器,但是要注意顺序,多层装饰器先执行最外层的装饰器
关于装饰器传参:
1.自身不传入参数的装饰器,使用两层函数
2.在自身传入参数的装饰器,使用三层函数
####装饰器装饰类#####
装饰器也可以用类实现
# ###用类实现时间统计装饰器###(带参数) class runtime:def __init__(self,name):self.name=namedef __call__(self, func):def deco(*args,**kwargs):start=time.time()result=func(*args,**kwargs)end=time.time()print(f"花费时间{end-start}")return resultreturn deco@runtime("name") def min(a,b):time.sleep(2)c = a-breturn c min(4,3)
python装饰器与闭包---装饰器相关推荐
- python高阶函数闭包装饰器_Python_基础_(装饰器,*args,**kwargs,高阶函数,函数闭包,函数嵌套)...
一,装饰器 装饰器:本质就是函数,功能是为其它的函数动态添加附加的功能 原则:对修改关闭对扩展开放 1.不修改被修饰函数的源代码 2.不修改被修改函数的调用方式 装饰器实现的知识储备:高阶函数,函数嵌 ...
- python高阶函数闭包装饰器_5.初识python装饰器 高阶函数+闭包+函数嵌套=装饰器...
一.什么是装饰器? 实际上装饰器就是个函数,这个函数可以为其他函数提供附加的功能. 装饰器在给其他函数添加功能时,不会修改原函数的源代码,不会修改原函数的调用方式. 高阶函数+函数嵌套+闭包 = 装饰 ...
- python高阶函数闭包装饰器_Python自学从入门到就业之高阶函数、嵌套函数、闭包、装饰器...
高阶函数 在Python中,函数其实也是一种数据类型. def test(): return 'hello world' print(type(test)) # 函数对应的数据类型是 function ...
- python反射、闭包、装饰器_python 闭包装饰器(一)
一.闭包 1.举例 defouter(): x= 10 def inner(): #内部函数 print(x) #外部函数的一个变量 returninner#调用inner()函数的方法 outer( ...
- python装饰器与闭包_Python 装饰器和闭包
Python 装饰器和闭包 装饰器是 Python 中常见的语法糖,这篇文章讲了闭包和装饰器的原理,并且分析了函数中变量的作用域,以及尝试总结了常见的坑. 装饰器基础 首先来看看装饰器的定义:装饰器本 ...
- Python基础15-函数闭包与装饰器
目录 装饰器概念 装饰器的实现 修改被装饰函数的代码(非装饰器实现) 修改被装饰函数的调用方式(非装饰器实现) 装饰器的实现(不完整的实现level1) 装饰器实现的语法糖(不完整的实现level2) ...
- Python 进阶_闭包 装饰器
目录 目录 闭包 函数的实质和属性 闭包有什么好处 小结 装饰器 更加深入的看看装饰器的执行过程 带参数的装饰器 装饰器的叠加 小结 装饰器能解决什么问题 小结 闭包 Closure: 如果内层函数引 ...
- [python 进阶] 第7章 函数装饰器和闭包
文章目录 7.1 装饰器基础知识 7.2 Python何时执行装饰器 7.3 使用装饰器改进"策略" 7.4 变量作用域(global) 备注 -比较字节码(暂略) 7.5 闭包 ...
- python高级-闭包-装饰器
闭包内容: 匿名函数:能够完成简单的功能,传递这个函数的引用,只有功能 普通函数:能够完成复杂的功能,传递这个函数的引用,只有功能 闭包:能够完成较为复杂的功能,传递这个闭包中的函数以及数据,因此传递 ...
最新文章
- 研究学者、医师与产业投资者齐聚一堂,将碰撞出何种火花?
- 为什么由Python转go
- 关于近期对Lucene.Net应用研究学习的总结
- CF449B Jzzhu and Cities 迪杰斯特拉最短路算法
- Nacos更新配置参数不生效
- linux 环境下配置python虚拟环境
- 神武4手游服务器维护,神武4手游势不可挡开服时间表_神武4手游新区开服预告_第一手游网手游开服表...
- strlen和sizeof的长度区别
- Java 发起http GET POST请求实例
- 一级计算机框线设置为窄线,计算机等级一级MS Office考题:第二套字处理题
- python用generator打印杨辉三角_python写generator输出杨辉三角遇到问题,望高手解答!...
- 史上最全科研网站!!!
- 解决XP系统桌面图标蓝底
- OpenCV学习2——矩阵的掩模
- JavaWeb-简析MVC三层架构
- OpenCV3学习(9.4)轮廓矩及其匹配(Moments 、HuMoments、matchShape函数)
- Centos安装 Node.js v12.16.1 和 v16.14
- 爬虫如何爬取某领域下百家号作者列表
- Android 自定义控件 轻松实现360软件详情页
- 打破价格限制1099元更超值 荣耀畅玩8C打造千元最强颜值实力派