zoukankan      html  css  js  c++  java
  • 简单回顾一下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函数,只是被赋予了原函数的名字而已

      

  • 相关阅读:
    阿里云自定义镜像保存规则
    linux常用命令
    SQL
    redis集群
    AOP中的通知
    mysql8.0无法给用户授权或提示You are not allowed to create a user with GRANT的问题
    ---Linux命令
    feign
    spring clud / dubbo
    Ajax嵌套问题
  • 原文地址:https://www.cnblogs.com/dg-blog/p/12023602.html
Copyright © 2011-2022 走看看