iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > Python >python3--装饰器
  • 562
分享到

python3--装饰器

2023-01-31 07:01:53 562人浏览 八月长安

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

摘要

# Author: Aaron Fan"""装饰器(别名:语法糖):定义:    本质是函数(装饰其它函数),就是为其它函数添加一些附件的功能原则:    1、不能修改被装饰的函数的源代码    2、不能修改被装饰的函数的调用方式    3

# Author: Aaron Fan


"""
装饰器(别名:语法糖):
定义:
   本质是函数(装饰其它函数),就是为其它函数添加一些附件的功能
原则:
   1、不能修改被装饰的函数的源代码
   2、不能修改被装饰的函数的调用方式
   3、装饰器存在对被装饰的函数是完全透明的(就是被装饰的函数完全感觉不到装饰器的存在)

实现装饰器的只是储备:
1、函数就是变量
2、高阶函数
3、嵌套函数

高阶函数 + 嵌套函数 == 装饰器
"""
import time


def timer(func):
   """
   一个最简单的装饰器:高阶函数 + 嵌套函数 == 装饰器
   计算一个函数的执行时间
   """
   def deco(*args,**kwargs):
       start_time = time.time()
       func(*args,**kwargs)  #这里运行传进来的实参(一个被装饰的函数)的函数体,这个示例中是指test1和test2
       stop_time = time.time()
       print("The func run time is %s" % (stop_time - start_time))
   return deco #返回deco的内存地址


@timer  # 给test1这个函数,添加一个装饰器,等同于 test1=timer(test1)=deco
       # 注意timer的return是deco,所以test1=timer(test1),就是调用timer函数,并把deco的内存地址赋值给test1
       # 所以以后都会不在直接执行这个用def定义的最原始的test1()这个函数
       # 程序后面的所调用的test1(),其实执行的是deco(),通过deco来执行test1里面的函数体
       # 这里的deco()仅仅是timer()的一个嵌套函数,相当于timer的局部变量是无法直接在全局引用的
       # 但是timer这个高阶函数,返回了deco的内存地址,所以通过test1=timer(test1)之后,test1就等于deco的内存地址了,就可以直接使用test1()了
           #此时这个test()其实就是deco(),而不再是最原始的定的那个def test()
def test1():
   time.sleep(1)
   print("in the test1")


@timer
def test2(name1,name2):
   time.sleep(1)
   print("in the test2")
   print(name1,name2)


test1() #这个现在执行的其实已经不是test1这个函数了,而是执行的deco函数
test2('James','Aaron')


--结束END--

本文标题: python3--装饰器

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

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

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • python3装饰器
    预备知识 首先我们要知道在python,一切皆对象,函数也是一个对象  >>> def test(): ... return "Hello World" 有自己的id值,有type,有自己的值 >>...
    99+
    2023-01-31
  • python3 装饰器
    看廖雪峰官网的python3装饰器有感 装饰器即将一个函数作为变量在新的函数中调用此函数。 作业: 能否写出一个@log的decorator,使它既支持: @logdef f():     pass 又支持: @log('execut...
    99+
    2023-01-31
  • python3--装饰器
    # Author: Aaron Fan"""装饰器(别名:语法糖):定义:    本质是函数(装饰其它函数),就是为其它函数添加一些附件的功能原则:    1、不能修改被装饰的函数的源代码    2、不能修改被装饰的函数的调用方式    3...
    99+
    2023-01-31
  • python3 装饰器全解
    本章结构: 1.理解装饰器的前提准备 2.装饰器:无参/带参的被装饰函数,无参/带参的装饰函数 3.装饰器的缺点 4.python3的内置装饰器 5.本文参考   理解装饰器的前提:1.所有东西都是对象(函数可以当做对象传递) 2.闭包 ...
    99+
    2023-01-30
    器全解
  • Python3中的装饰器
    一.装饰器 1.定义:从字面上理解,就是装饰对象的器件。可以在不修改原有代码的情况下,为被装饰的对象增加新的功能或者附加限制条件或者帮助输出。装饰器有很多种,有函数的装饰器,也有类的装饰器。装饰器在很多语言中的名字也不尽相同,它...
    99+
    2023-01-31
  • python3学习之装饰器
    #定义装饰器,outer参数是函数,返回也是函数 #作用:在函数执行前和执行后分别附加额外功能 def  outer(func):     def  inner(*args, **kwargs):         print("log") ...
    99+
    2023-01-31
  • Python3--装饰器(随堂笔记)
    装饰器前戏 import time def bar(): time.sleep(3) # 睡3秒 print("in the bar") def test1(func): print("in the test1") ...
    99+
    2023-01-31
    笔记
  • python3 迭代器、生成器、装饰器、
    本节内容迭代器&生成器装饰器Json & pickle 数据序列化软件目录结构规范作业:ATM项目开发 1.列表生成式迭代器&生成器列表生成式孩子我现在有个需求看列表[0, 1, 2, 3, 4, 5, 6, 7, ...
    99+
    2023-01-31
    生成器 迭代
  • python3 基础(4)-装饰器、生成
    装饰器(本质:函数)定义:为其他函数添加附加功能(装饰器对于被装饰函数是“透明的”、“不存在的”);执行过程:调用被装饰函数实际上是调用修饰函数原则:不能修改被装饰函数的源代码;不能修改被装饰函数的调用方式。实现装饰器的知识补充:函数即“变...
    99+
    2023-01-31
    基础
  • python3装饰器的简单解释
    闭包,也叫词法闭包:如下所示函数A主要是为了函数B提供运行环境的 闭包只是在表现和形式上像函数,其实闭包并不是函数 由函数在嵌套环境中,内层函数里,对外层函数作用域的变量进行了引用,那么在外层函数返回后,内层函数依然可是使用外层函数的变量,...
    99+
    2023-01-31
    简单
  • python3--装饰器高级学习版
    __author__ = "Aaron Fan"import time #导入time模块user,passwd = 'alex','abc123'   #用户名密码def auth(auth_type):    #创建auth函数,创建a...
    99+
    2023-01-31
    高级
  • Python3 迭代器,生成器,装饰器
    1.迭代器 迭代器有两个基本方法,iter()和next(),next()完成后会引发StopIteration异常 a='abcdef' b=iter(a) #创建迭代器对象 print(type(b)) while True: t...
    99+
    2023-01-30
    生成器 迭代
  • python3:装饰器的5大用法总结
    装饰器,顾名思义,就是给函数作装饰作用的,相当于只是给函数化了一个装,并没有给他添加额外的代码,但是却增加了新功能,就如同我们在冬天很冷的情况下,想要变暖和(添加新功能),但是我们不是生活在武侠小说里有内功,肿么办?我们可以穿一件羽绒服来...
    99+
    2023-01-31
  • python3--函数的有用信息,带参数的装饰器,多个装饰器装饰同一个函数
    开放封闭原则1 对扩展是开放的    为什么要对扩展开放呢?    我们说,任何一个程序,不可能在设计之初就已经想好了所有的功能并且未来不做任何更新和修改,所以我们必须允许代码扩展,添加新功能2 对修...
    99+
    2023-01-30
    函数 多个 有用
  • python装饰器2:类装饰器
    装饰器1:函数装饰器 装饰器2:类装饰器 装饰器3:进阶 本文是装饰器相关内容的第二篇,关于类装饰器。 "类装饰器"有两种解读方式:用来装饰类的装饰器;类作为装饰器装饰其它东西。你如何认为取决于你,两种说法都有出现在其它的文章中。我的...
    99+
    2023-01-30
    python
  • python3 最常用的三种装饰器语法汇总
    目录python3 最常用的三种装饰器语法总结1.简述语法2.不带参数的函数的装饰器3.带参数的函数的装饰器python3 最常用的三种装饰器语法总结 1.简述语法 装饰器也叫函数装...
    99+
    2024-04-02
  • 装饰器
    def wrapper(func):   def inner(args*,**kwargs):     ret = func(args*,**kwargs)     return ret   return inner @wrapper d...
    99+
    2023-01-30
  • python3--函数名本质,函数嵌套,闭包,装饰器
    python函数的嵌套和作用域链函数的嵌套调用def max2(x,y):     m = x if x > y ...
    99+
    2023-01-30
    函数 嵌套 本质
  • python装饰器1:函数装饰器详解
    装饰器1:函数装饰器 装饰器2:类装饰器 装饰器3:进阶 先混个眼熟 谁可以作为装饰器(可以将谁编写成装饰器): 函数 方法 实现了__call__的可调用类 装饰器可以去装饰谁(谁可以被装饰): 函数 方法 类 基础...
    99+
    2023-01-30
    详解 函数 python
  • 类装饰器
      在理解类装饰器之前,先回忆一下有关装饰器的知识。装饰器本质上就是一个函数,它可以让其他函数在不需要做任何代码变动的前提下增加额外的功能,装饰器的返回值也是一个函数对象(函数的引用)。   __call__方法  一个对象是否可调用,看...
    99+
    2023-01-30
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作