2019.04.07 装饰器介绍

文章来自网易云课堂

装饰器实际上就是一个函数,所有要先定义这个函数

然后里面还有一个函数,记得返回这个函数

当做了这个功能装饰器之后,就可以想在某个函数中添加一些想要的功能了

而并没有修改原先函数的基础上给这个函数增加了一些功能

比如当自己已经写完了一个项目,然后想在这个项目中的函数中都添加hello world

有两个特别之处:

  参数是一个函数

  返回值是一个函数

#在打印run之前,先要打印一个hello world

#在所有的函数执行之前,都要打印一个 hello world

#装饰器使用时通过@符号,放在函数的上面

#装饰器中定义的函数,要使用*args,**kwargs两对兄弟的组合,并且原始函数执行的时候也要放进去

#需要使用functools.wraps在装饰器中的函数上把传进来的这个函数进行包裹,这样就不会丢失原来的函数的__name__等属性。

def zhuanshiqi(func):

  @wraps

  def _wrapper(*args,**kwargs)

    print('hello world')

       response  = func(*args,**kwargs)    run函数有返回值得话要接受的

    return response

  return _wrapper

@zhuangshiqi

def run():

  pass

@zhuangshiqi: run =  zhuangshiqi(run)= _wrapper

run.__name__  是wrapper  

from functools import wraps

原文地址:https://www.cnblogs.com/Py-king/p/10664934.html