zoukankan      html  css  js  c++  java
  • 带参数的装饰代码示例

    def tag(name="div",title=None):
        def _tag(func):
            def deco(*args,**kwargs):
               result = None
               if title is None:
                   result = f"<{name}>"+func(*args,**kwargs)+f"</{name}>"
               else:   
                   result = f"<{name} class='{title}'>"+func(*args,**kwargs)+f"</{name}>"
               return result 
            return deco
        return _tag    
    
    @tag(name="h1",title="say")
    def foo(msg):
        return "hello world"
    
    @tag()
    def hello():
        return "hehe"
    
    print(foo("abc"))
    print(hello())
    

    通过第三方包wrapt简单的修改下:

    import wrapt
    
    def tag(name="div",title=None):
        @wrapt.decorator
        def _tag(wrapped, instance, args, kwargs):
               result = None
               if title is None:
                   result = f"<{name}>"+wrapped(*args,**kwargs)+f"</{name}>"
               else:   
                   result = f"<{name} class='{title}'>"+wrapped(*args,**kwargs)+f"</{name}>"
               return result 
        return _tag 
    
    @tag(name="h1",title="say")
    def foo(msg):
        return "hello world"
    
    @tag()
    def hello():
        return "hehe"
    
    print(foo("abc"))
    print(hello())
    
  • 相关阅读:
    编译错误总结。
    9.7
    9.5
    9.6
    9.4
    9.3
    FutureTask取结果超时代码小测试
    java concurrent包常用类小结
    java Nio零散知识点整理
    java进阶教程unit_2java常用类(2)
  • 原文地址:https://www.cnblogs.com/c-x-a/p/11129560.html
Copyright © 2011-2022 走看看