• python装饰器的一些理解


    以一个带参数的函数的装饰器为例子

    def debug(func):
        def wrapper(something):     # 指定一毛一样的参数
            print("[DEBUG]: enter {}()".format(func.__name__))
            return func(something)  #这里写func(something)好像也可以
        return wrapper              # 返回包装过函数
    
    @debug
    def say(something):
        print("hello {}!".format(something))
    
    say("yfc")
    

    以现在初学的理解是相当于把被装饰的函数作为参数,重写一个包含被装饰函数内容的函数,最后返回一个新函数。

    **但是有一些函数的参数我们是不知道的,这个时候可以使用*args,*kwargs来填充参数(args把参数打包成元组,**kwargs把元素打包成字典)
    这个时候上面的代码就可以改为

    def debug(func):
        def wrapper(*args,**kwargs):     # 指定一毛一样的参数
            print("[DEBUG]: enter {}()".format(func.__name__))
            return func(*args,**kwargs)  #这里写func(*args,**kwargs)好像也可以
        return wrapper              # 返回包装过函数
    
    @debug
    def say(something):
        print("hello {}!".format(something))
    
    

    这差不多就是装饰器的初级用法了。

  • 相关阅读:
    如何下载文件
    线程方法wait()和notify()的使用
    多线程的同步问题
    线程
    线程上下文类加载器(Context ClassLoader)
    自定义ClassLoader的使用
    类加载器及其双亲委托机制
    类加载机制导致静态变量出错问题
    JAVA JVM助记符
    JVM调试说明
  • 原文地址:https://www.cnblogs.com/yfc0818/p/11072681.html
Copyright © 2020-2023  润新知