• Python装饰器理解(新手)


    本文介绍Python其中一个功能--装饰器

    只做简单介绍, 可以帮助新手理解装饰器, 没有完整的装饰器代码

    装饰器本质上就是一个函数,在不修改源代码,调用方法的前提下,用来给其他函数添加功能的函数

    知识要求   :  高阶函数,内嵌函数

    一个堪称最简单的函数:

    def test1():
        print('-----hello Jeden -----')

    现在在不修改函数源代码,不修改调用方法前提下,增加打印一个语句hello world,怎么加?

    我们需要再次定义一个函数:而这个函数,就是一个最简单的装饰器:

    1 def warpper(func):
    2     def inner():
    3         print('hello world')
    4         func() 
    5     return inner

     warpper函数内嵌inner函数,最后返回inner函数,可是,这个函数怎么用呢?

    你肯定已经看出来warpper函数参数是一个函数,在inner函数内部进行调用

    所以,我们可以这样用:

    warpper(test1) 

    但是这样肯定不行的,返回值是一个函数的引用,所以需要用一个变量名来存储,然后加上小括号调用

    func = warpper(test1)
    func()
    # -------------output( hello world hello Jeden )

    这就完成了函数的装饰, 但是调用方法改变了,原来的test1改成了func(),所以做以下修改:

    func() = warpper  # 改成  test1 = warpper(test1)
    func()    #  改成test1()

    已经完成了99%了,最后用python提供的语法糖就行了

    类似于这样  --  @function_name

    # 第一过程最终代码展示
    def warpper(func):
        def inner():
            print('hello world')
            func()
        return inner
    
    @warpper
    def test():
        print('hello jeden')
    test()

    这就是最简单的装饰器案例。

  • 相关阅读:
    JQuery.Gantt(甘特图)开发
    文件上传利器SWFUpload入门简易教程
    ES6:JavaScript 新特性
    记一次关于垃圾回收app的推广成功案例
    c#游戏之路-wpf版本开发
    C#游戏之路-winform,wpf,directx,opengl的了解
    Python3 引号
    while循环练习
    用jquery实现瀑布流(方式1-固定宽度和列数,按顺序添加图片)
    jquery实现图片轮播淡入淡出效果
  • 原文地址:https://www.cnblogs.com/jedenzhan/p/8683476.html
Copyright © 2020-2023  润新知