python全栈脱产第11天

Posted zhouyi0316

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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),用于将装饰器内函数伪装成和被装饰对象一样







以上是关于python全栈脱产第11天的主要内容,如果未能解决你的问题,请参考以下文章

python全栈脱产第4天

python全栈脱产第17天

python全栈脱产第12天

python全栈脱产第37天------进程池与线程池协程gevent模块单线程下实现并发的套接字通信

python全栈脱产第34天------开启进程的两种方式join方法进程对象其他相关的属性和方法僵尸进程孤儿进程守护进程互斥锁

python全程脱产第31天------TCP协议socket