zoukankan      html  css  js  c++  java
  • 装饰器详解

    引用https://www.cnblogs.com/jixuege-1/p/5779464.html

    从字面意思来看,器代表函数的意思,可以说,装饰器本身就是函数,都是用def语法来定义的。

    装饰器:

    定义:本质是函数,(装饰其他函数)

    为其他函数添加附加功能。

    ①先来看个简单的,在没学函数之前,我想给定义的函数打个日志,写法如下:

     1 def  test1():
     2     pass
     3     print('logging')
     4 
     5 def test2():
     6     pass
     7     print('logging')
     8 #调用
     9 test1()
    10 test2()

    ②接下来学了函数,我就把打日志定义成一个函数

    def logger():
        print('logging')
    
    def  test1():
        pass
        logger()
    
    def test2():
        pass
        logger()
    #调用
    test1()
    test2()

    假设我写的函数已经上线运行了,某一天,我有个需求,在这个里面新增一个功能,那怎么去做这个事?

    最简单的就是:挨个找到100个函数,加上去。但是问题是程序已经运行了,我刚才操作是修改我程序的源代码,会有风险发生。

    所以说,我要新增一个功能,不能够修改函数的源代码,函数一旦写好了,原则上不能动源代码了。

    所以就有了下面的原则:

    • 不能修改被装饰函数的源代码。
    • 不能修改被装饰的函数的调用方式。装饰器对于被装饰函数是完全透明的。他没有动我的源代码,我该怎么调用运行就怎么运行。
  • 相关阅读:
    钩子函数和回调函数
    Vue.js的坑
    数据库清空表中的数据
    chrome jsonView插件安装
    PostgreSQL数据的导出导入
    PostgreSQL9.6.2的WINDOWS下安装
    HEXO+Github,搭建属于自己的博客
    Vue.js 入门指南之“前传”(含sublime text 3 配置)
    win系统下nodejs安装及环境配置
    Vue.js学习网址
  • 原文地址:https://www.cnblogs.com/joneylulu/p/10261859.html
Copyright © 2011-2022 走看看