zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    hdu 1176 免费馅饼
    算法竞赛入门经典训练指南-做题详细记录(更新中)
    poj-3250 Bad Hair Day
    poj-2823 Sliding Window
    2019.7.15-7.20暑假集训总结
    hdu 1754 I hate it
    poj 1611 The Suspects
    hdu 3038 How Many Answers Are Wrong
    hdu 1213 How Many Tables
    POJ 1182 食物链
  • 原文地址:https://www.cnblogs.com/Py-king/p/10664934.html
Copyright © 2011-2022 走看看