简单回顾一下python 装饰器。

Posted iamdaguduizhang

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了简单回顾一下python 装饰器。相关的知识,希望对你有一定的参考价值。

Python 装饰器(Decoratar)存在的意义就是再不改变原有函数的情况下,给函数增加功能。

直接通过代码以及相应的注释来展示。

def fnname_dec(fn):
    def wapper(*args, **kwargs):  # 为什么wapper 要接收参数呢。 因为被装饰后的函数其实就是wapper,
        # 然后要接受被装饰后的函数speak的参数供原来的speak函数使用来达到不影响原函数的功能。
        print("My name is " + fn.__name__)
        return fn(*args, **kwargs)
    return wapper


# @fanname_dec
def speak(word):
    print("i say:" + word)
    return "speak"


if __name__ == "__main__":
    speak = fnname_dec(speak)  # 这句话的功能与@fanname_dec 这个语法糖是一样的。 当执行fnname_dec(speak)的时候,
    # 就像当于执行了wapper函数,因为fnname_dec 的返回值是wapper 是这个函数而不是某个值。
    speak("haha")  # 就相当于wapper("haha"), 而wapper的返回值是原来speak的返回值,并且在返回的时候执行了 speak()函数
    # 所以也就到达了不修改原来函数的情况下 给原有的函数增加了功能。
    # print(speak.__name__)  ==> wapper 其实现在的函数根本就是wapper函数,只是被赋予了原函数的名字而已

  

以上是关于简单回顾一下python 装饰器。的主要内容,如果未能解决你的问题,请参考以下文章

python使用上下文对代码片段进行计时,非装饰器

Python高阶函数与函数装饰器-day4

Python闭包和装饰器

回顾Python装饰器

python 基础篇 12 装饰器进阶

[Python]理解一下装饰器