zoukankan      html  css  js  c++  java
  • python全栈脱产第11天------装饰器

    装饰器

      定义:器是指具备某一功能的工具,装饰指的是为被装饰器对象添加新功能,所以装饰器就是为被装饰对象添加新功能的工具

        注意:装饰器本身可以是任意可调用的对象,被装饰器的对象也可以是任意可调用对象

      用处:开放封闭原则:封闭指的是对修改封闭,对扩展开放

      遵循两大原则:1.不修改被装饰对象的源代码

             2.不修改被装饰对象的调用方式

      目标:在遵循两大原则的前提下为被装饰对象添加上新功能

      用法:

      def foo(func):

        def wrapper(*args,**kwargs):

          res=func(*args,**kwargs)

        return res

      return wrapper

      装饰器的语法糖:在被装饰对象正上方单独一行写@装饰器的名字

            原理:python解释器一旦运行到@装饰器的名字,就会调用装饰器,然后将被装饰函数的地址当做参数传给装饰器,最后将装饰器运行的结果赋值给原函数名

      

      def foo(func):

        def wrapper(*args,**kwargs):

          res=func(*args,**kwargs)

        return res

      return wrapper

      @foo()

      def index():

        print(xxx)

      index()

      叠加多个装饰:解释@语法的时候是自下而上,执行装饰器内的函数是自上而下

      有参装饰器:需要在装饰器外面再套一个函数用于传参  

    def outter1(x,y,z):
    def outter2(func):
    def wrapper(*args,**kwargs):
    res=func(*args,**kwargs)
    return res
    return wrapper
    return outter2  
      wraps装饰器:导入wraps模块,应加在装饰器最内层的函数上,@wraps(func),用于将装饰器内函数伪装成和被装饰对象一样
  • 相关阅读:
    Laravel 5.1 简单学习
    Laravel5.1 报错:控制器不存在
    集电极开路、漏极开路、上拉电阻、下拉电阻等接口相关基本概念
    UDS(ISO14229-2006) 汉译(No.7 应用层协议)
    Freescale 车身控制模块(BCM) 解决方案
    汽车控制器LIMPHOME电路设计
    区分整流二极管和稳压二极管
    耦合电容和滤波电容的区别
    二极管钳位电路
    开关二极管工作原理
  • 原文地址:https://www.cnblogs.com/zhouyi0316/p/9433000.html
Copyright © 2011-2022 走看看