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函数,只是被赋予了原函数的名字而已

      

  • 相关阅读:
    python3给socket模块设置代理
    yield、greenlet与协程gevent
    线程池
    并发通信、生产者与消费者模型
    多进程和多线程
    非阻塞套接字与IO多路复用
    14.python模块之subprocess
    判断页面是否滑到底部
    @vue/cli 3.x 版本配置productionGzip提高性能
    vue跳转到指定位置
  • 原文地址:https://www.cnblogs.com/dg-blog/p/12023602.html
Copyright © 2011-2022 走看看