装饰器的作用:在不改变函数或者类的源代码基础上添加额外的功能

装饰器是一种设计模式,它的本质就是闭包,需要传入一个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装饰器与闭包---装饰器相关推荐

  1. python高阶函数闭包装饰器_Python_基础_(装饰器,*args,**kwargs,高阶函数,函数闭包,函数嵌套)...

    一,装饰器 装饰器:本质就是函数,功能是为其它的函数动态添加附加的功能 原则:对修改关闭对扩展开放 1.不修改被修饰函数的源代码 2.不修改被修改函数的调用方式 装饰器实现的知识储备:高阶函数,函数嵌 ...

  2. python高阶函数闭包装饰器_5.初识python装饰器 高阶函数+闭包+函数嵌套=装饰器...

    一.什么是装饰器? 实际上装饰器就是个函数,这个函数可以为其他函数提供附加的功能. 装饰器在给其他函数添加功能时,不会修改原函数的源代码,不会修改原函数的调用方式. 高阶函数+函数嵌套+闭包 = 装饰 ...

  3. python高阶函数闭包装饰器_Python自学从入门到就业之高阶函数、嵌套函数、闭包、装饰器...

    高阶函数 在Python中,函数其实也是一种数据类型. def test(): return 'hello world' print(type(test)) # 函数对应的数据类型是 function ...

  4. python反射、闭包、装饰器_python 闭包装饰器(一)

    一.闭包 1.举例 defouter(): x= 10 def inner(): #内部函数 print(x) #外部函数的一个变量 returninner#调用inner()函数的方法 outer( ...

  5. python装饰器与闭包_Python 装饰器和闭包

    Python 装饰器和闭包 装饰器是 Python 中常见的语法糖,这篇文章讲了闭包和装饰器的原理,并且分析了函数中变量的作用域,以及尝试总结了常见的坑. 装饰器基础 首先来看看装饰器的定义:装饰器本 ...

  6. Python基础15-函数闭包与装饰器

    目录 装饰器概念 装饰器的实现 修改被装饰函数的代码(非装饰器实现) 修改被装饰函数的调用方式(非装饰器实现) 装饰器的实现(不完整的实现level1) 装饰器实现的语法糖(不完整的实现level2) ...

  7. Python 进阶_闭包 装饰器

    目录 目录 闭包 函数的实质和属性 闭包有什么好处 小结 装饰器 更加深入的看看装饰器的执行过程 带参数的装饰器 装饰器的叠加 小结 装饰器能解决什么问题 小结 闭包 Closure: 如果内层函数引 ...

  8. [python 进阶] 第7章 函数装饰器和闭包

    文章目录 7.1 装饰器基础知识 7.2 Python何时执行装饰器 7.3 使用装饰器改进"策略" 7.4 变量作用域(global) 备注 -比较字节码(暂略) 7.5 闭包 ...

  9. python高级-闭包-装饰器

    闭包内容: 匿名函数:能够完成简单的功能,传递这个函数的引用,只有功能 普通函数:能够完成复杂的功能,传递这个函数的引用,只有功能 闭包:能够完成较为复杂的功能,传递这个闭包中的函数以及数据,因此传递 ...

最新文章

  1. 研究学者、医师与产业投资者齐聚一堂,将碰撞出何种火花?
  2. 为什么由Python转go
  3. 关于近期对Lucene.Net应用研究学习的总结
  4. CF449B Jzzhu and Cities 迪杰斯特拉最短路算法
  5. Nacos更新配置参数不生效
  6. linux 环境下配置python虚拟环境
  7. 神武4手游服务器维护,神武4手游势不可挡开服时间表_神武4手游新区开服预告_第一手游网手游开服表...
  8. strlen和sizeof的长度区别
  9. Java 发起http GET POST请求实例
  10. 一级计算机框线设置为窄线,计算机等级一级MS Office考题:第二套字处理题
  11. python用generator打印杨辉三角_python写generator输出杨辉三角遇到问题,望高手解答!...
  12. 史上最全科研网站!!!
  13. 解决XP系统桌面图标蓝底
  14. OpenCV学习2——矩阵的掩模
  15. JavaWeb-简析MVC三层架构
  16. OpenCV3学习(9.4)轮廓矩及其匹配(Moments 、HuMoments、matchShape函数)
  17. Centos安装 Node.js v12.16.1 和 v16.14
  18. 爬虫如何爬取某领域下百家号作者列表
  19. Android 自定义控件 轻松实现360软件详情页
  20. 打破价格限制1099元更超值 荣耀畅玩8C打造千元最强颜值实力派

热门文章

  1. 纤亿通带您了解光开关是如何工作的?
  2. Python游戏工具包---Pygame最常用的15个模块详解(附pdf版本)
  3. 蓝桥杯历年真题及解析(Java B组)
  4. 可验证延迟函数(VDF)
  5. 计算机网络初探核心素养目标,信息技术与学生核心素养初探
  6. 金融风控(贷款违约预测)
  7. 数字集成:数字集成和数字电路的本质区别
  8. Android 中Set 的基本使用方法
  9. 关于PHP的成绩管理系统 (老师,管理员,学生,排课)
  10. 解决:Unable to clone Git repository due to self signed certificate(由于自签名证书,无法克隆Git存储库)的问题