zoukankan      html  css  js  c++  java
  • DAY12学习笔记

      装饰器

        什么是装饰器

          器->工具。

          装饰->指的是为被装饰对象添加新功能。

          装饰器本身可以是任意可调用的对象->函数。

          被装饰对象也可以是任意可调用的对象->函数。

          目标:写一个函数来为另一个函数添加新功能。

        为何要用装饰器

          开放封闭原则:软件一旦上线。就对修改封闭,对扩展开放。

            对修改封闭:

              不能修改功能的源代码。

              也不能修改代码的调用方式。

            对扩展开放:

              可以为原有功能添加新的功能。

          用装饰器的目的就是在不修改功能源代码以及调用方式的前提下,为其添加新的功能。

        如何用装饰器

          利用两层闭包函数为核心语法为程序实现某些功能。     

        装饰器的语法糖@

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

        有参装饰器

          模板:def outter2(xxx,yyy):

               def outter(func):

                 def wrapper(*args,**kwargs):

                   res=func(*args,**kwargs)

                   print(xxx) print(yyy)

                   return res

                 return wrapper

               return outter

          在传值已经饱满,无法在进行传值的情况下,利用添加一层闭包函数来实现目的。

        global和nonlocal

          global:在局部声明变量为全局变量,用来在局部修改全局变量。

          nonlocal:在局部中声明变量是外层函数的变量,无法受全局变量影响。

  • 相关阅读:
    BZOJ1000 A+B Problem
    网络最大流
    树形结构
    BZOJ2521 最小生成树 最小割
    HDU5266 LCA 树链剖分LCA 线段树
    BZOJ3991 寻宝游戏 LCA 虚树 SET
    深度优先搜索DFS
    斯特林数
    Noip2017 普及 T3 Chess
    键盘自动机
  • 原文地址:https://www.cnblogs.com/lipengjia/p/9714877.html
Copyright © 2011-2022 走看看