返回顶部
首页 > 资讯 > 后端开发 > Python >Python 装饰器总结
  • 932
分享到

Python 装饰器总结

Python 2023-01-31 02:01:28 932人浏览 薄情痞子

Python 官方文档:入门教程 => 点击学习

摘要

装饰器是高阶函数,装饰器是对传入函数的功能增强。 装饰器的副作用:原函数对象的属性都被替换了,而使用了装饰器,查看到的函数对象属性就变成装饰器的函数对象了,如果需要查被装饰的函数的属性?对用原函数的属性覆盖掉装饰器的属性。解决方法:通过co

装饰器是高阶函数,装饰器是对传入函数的功能增强。

 

装饰器的副作用:原函数对象的属性都被替换了,而使用了装饰器,查看到的函数对象属性就变成装饰器的函数对象了,如果需要查被装饰的函数的属性?对用原函数的属性覆盖掉装饰器的属性。


解决方法:

通过copy_properties函数将被包装函数的属性覆盖掉包装函数,凡是被装饰的函数都需要更改函数的属性,可以将复制属性的函数做成装饰器函数。做成通用函数。

 

装饰器分为无参装饰器和带参装饰器。

 

带参装饰器,是一个函数,函数作为他的形参,返回值是一个不带参的装饰器函数,使用@functionname(参数列表)方式调用,可以看做在装饰器外层又加一层函数。

 

functools模块

1:functools.update_wrapper(wrapper,warpped,assigned =WRAPPER_ASSIGNMENTS,updated = WRAPPER_UPDATES)类似copy_properties功能。

  1)Wrapper 包装函数,被更新者,

  2)wrapped被包装函数、数据源

  3)元组WRAPPER_ASSIGNMENTS中是要被覆盖的属性‘__module__’,’__name__’,’__qualname__’,’__annotations__’,模块名,名称,限定名,文档,参数注解。

  4)元组WRAPPER_UPDATES中是要被更新的属性,__dict__属性字典

  5)增加一个__wrapped__属性,保留着wrapped函数


2:functools.wraps(warpped,assigned=WRAPPER_ASSIGNMENTS,updated= WRAPPER_UPDATES)类似copy_properties功能。

    1)wrapped被包装函数、数据源

    2)元组WRAPPER_ASSIGNMENTS中是要被覆盖的属性‘__module__’,’__name__’,’__qualname__’,’__annotations__’,模块名,名称,限定名,文档,参数注解。

    3)元组WRAPPER_UPDATES中是要被更新的属性,__dict__属性字典

    4)增加一个__wrapped__属性,保留着wrapped函数


3:reduce方法

refuce方法,可迭代对象不能位空:初始值没提供就在可迭代对象中取一个元素。


4:partial 方法

偏函数,报函数部分的参数固定下来,相当于为部分的参数添加了为一个固定的默认值,形成一个新的函数并返回。从partial生成的新函数,是对原函数的封装。


5:@dunctools.lur_cache(maxsize = 128,typed = false)

least-recently-used装饰器,如果maxsize设置为None,则禁用LRU功能,并且缓存可以无线增长。当maxsize是二的幂时,lru功能执行的最好。如果typed设置为Ture,则不同类型的函数参数将单独缓存。


lru_cache装饰器应用

1: 使用前提:同样的函数参数一定得到同样的结果,函数执行时间很长,且需要多次执行。

2: 本质时函数调用的参数----à返回值

3: 缺点:不支持缓存过期,key无法过期,失效,不支持清除操作,不支持分布式,是一个单机的缓存。

4:使用场景:单机上需要空间换时间的地方,可以使用缓存来将计算变成快速的查询。


--结束END--

本文标题: Python 装饰器总结

本文链接: https://lsjlt.com/news/187127.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • Python 装饰器总结
    装饰器是高阶函数,装饰器是对传入函数的功能增强。 装饰器的副作用:原函数对象的属性都被替换了,而使用了装饰器,查看到的函数对象属性就变成装饰器的函数对象了,如果需要查被装饰的函数的属性?对用原函数的属性覆盖掉装饰器的属性。解决方法:通过co...
    99+
    2023-01-31
    Python
  • Python 装饰器的总结(一)
    先来说明下几个定义:1,函数在python中,函数通过def关键字、函数名和可选的参数列表定义。通过return关键字返回值。我们举例来说明如何定义和调用一个简单的函数:1234567#coding:UTF8 def foo():     ...
    99+
    2023-01-31
    Python
  • python总结之闭包和装饰器
    目录一、装饰器1.装饰器的简单介绍2.装饰器的解析过程二、闭包三、闭包中nonlocal语句的使用1.外部变量的引用和改写2.nolocal的使用及特点四、闭包与装饰器五、闭包的作用...
    99+
    2024-04-02
  • Python pytest装饰器总结(实例详解)
    几个常用装饰器 pytest.ini 配置文件 例子: [pytest] addopts = -v -s --html=py_test/scripts/report/report...
    99+
    2024-04-02
  • python中函数总结之装饰器闭包详解
    1、前言 函数也是一个对象,从而可以增加属性,使用句点来表示属性。 如果内部函数的定义包含了在外部函数中定义的对象的引用(外部对象可以是在外部函数之外),那么内部函数被称之为闭包。 2、装饰器 装饰器就是包...
    99+
    2022-06-04
    详解 函数 python
  • python3:装饰器的5大用法总结
    装饰器,顾名思义,就是给函数作装饰作用的,相当于只是给函数化了一个装,并没有给他添加额外的代码,但是却增加了新功能,就如同我们在冬天很冷的情况下,想要变暖和(添加新功能),但是我们不是生活在武侠小说里有内功,肿么办?我们可以穿一件羽绒服来...
    99+
    2023-01-31
  • Python必备基础之闭包和装饰器知识总结
    目录一、闭包1.1 三要素 1.2 语法1.3 优点1.4 缺点1.5 作用二、装饰器 Decorator2.1 定义2.2 语法2.3 本质2.4 装饰器链一、闭包 1.1 三要素...
    99+
    2024-04-02
  • python装饰器2:类装饰器
    装饰器1:函数装饰器 装饰器2:类装饰器 装饰器3:进阶 本文是装饰器相关内容的第二篇,关于类装饰器。 "类装饰器"有两种解读方式:用来装饰类的装饰器;类作为装饰器装饰其它东西。你如何认为取决于你,两种说法都有出现在其它的文章中。我的...
    99+
    2023-01-30
    python
  • Python的@装饰器的作用小结
    我们在编程过程中,常常会遇到这种需求: 比如,我想开发一款计算器,我已经写好了一堆函数,用于执行各种计算,那么我们需要在执行各种计算函数前,首先对输入的数据进行检查,确保他们必须得是...
    99+
    2024-04-02
  • python 进阶学习之python装饰器小结
    装饰器总结 什么是装饰器?处理函数的函数,加一个功能,但是不影响原来函数的内部结构生活中的例子:给手机加一个外壳,外壳保护了手机 装饰器有什么用?增强函数的功能 装饰器使用场景增加被...
    99+
    2024-04-02
  • python 装饰器
    装饰器本质上是一个Python函数,它可以让其他函数在不雲要做任何代码变动的前提下增加额外功能,装饰器的返回值也是一个函数对象。它经常用于有切面雲求的场景,比如:插入日志、性能测试、事务处理、缓存、权限校验等场景。装饰器是解决这类问题的绝佳...
    99+
    2023-01-30
    python
  • python装饰器
    什么是装饰器:   装饰器就是python中的一个语法糖。作用就是在不改动之前代码的情况下给某个函数增加相应想要增加的功能。 假设需求:   我在几个函数内分别放了一部电影,代码如下: 1 def mv1(): 2 print(...
    99+
    2023-01-30
    python
  • python-装饰器
    装饰器简介:给被装饰的函数在不更改代码的基础上增加新的功能;多个装饰器的执行顺序:从最靠近原始函数的装饰器开始执行,最后执行原始函数; 直接上个简单的例子就懂了: 一 最简单的装饰器:#!/usr/bin/python def deco(f...
    99+
    2023-01-31
    python
  • python装饰器1:函数装饰器详解
    装饰器1:函数装饰器 装饰器2:类装饰器 装饰器3:进阶 先混个眼熟 谁可以作为装饰器(可以将谁编写成装饰器): 函数 方法 实现了__call__的可调用类 装饰器可以去装饰谁(谁可以被装饰): 函数 方法 类 基础...
    99+
    2023-01-30
    详解 函数 python
  • Python装饰器-闭包与函数装饰器
    一、闭包在学习装饰器前,需要先了解闭包的概念。形成闭包的要点:函数嵌套将内部函数作为外部函数的返回值内部函数必须要使用到外部函数的变量下面以一个计算列表平均值的案例来讲解闭包:def make_average(): # 创建一个列表,用来保...
    99+
    2023-05-14
    Python 函数 装饰器
  • Python之装饰器
    在Python中一切皆对象,函数是一等对象。这意味着可以通过名字引用函数。>>> a=123 >>> a 123 >>> name='zeng' >>> name 'z...
    99+
    2023-01-31
    Python
  • python装饰器详解
            python中的装饰器(decorator)一般采用语法糖的形式,是一种语法格式。比如:@classmethod,@staticmethod,@property,@xxx.setter,@wraps(),@func_na...
    99+
    2023-09-01
    python
  • python装饰器进阶
    目录 装饰器进阶 1. 被装饰的函数有多个参数。 2. 被装饰的函数有返回值 3.在函数中嵌入装饰器 4. 装饰器类 ...
    99+
    2023-01-30
    进阶 python
  • day20-python之装饰器
    1.装饰器 1 #!/usr/bin/env python 2 # -*- coding:utf-8 -*- 3 import time 4 def cal(l): 5 start_time=time.time() ...
    99+
    2023-01-31
    python
  • python 装饰器理解
    在理解装饰器之前,先应该对闭包有个概念:所谓闭包,就是将组成函数的语句和这些语句的执行环境打包在一起时得到的对象,它的主要作用是封存上下文。这一特性可以巧妙的被用于现有函数的包装,从而为现有函数添加功能,这就是装饰器。装饰器的本质与作用装饰...
    99+
    2023-01-31
    python
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作