• python:装饰器


    python装饰器的前提是Python 中的函数和 Java、C++不太一样,Python 中的函数可以像普通变量一样当做参数传递给另外一个函数,例如:

    def foo():
        print("foo")
    
    def bar(func):
        func()
    
    bar(foo)

    概括的讲,装饰器的作用就是为已经存在的对象添加额外的功能。首先,需要定义一个装饰器函数,接受另外一个函数作为参数:

    def use_logging(level):
        def decorator(func):
            def wrapper(*args, **kwargs):
                if level == "warn":
                    logging.warn("%s is running" % func.__name__)
                elif level == "info":
                    logging.info("%s is running" % func.__name__)
                return func(*args)
            return wrapper
    
        return decorator

    通过@调用装饰器修饰函数:

    @use_logging(level="warn")
    def foo(name='foo'):
        print("i am %s" % name)
    
    foo()

    上面的 use_logging 是允许带参数的装饰器。它实际上是对原有装饰器的一个函数封装,并返回一个装饰器。我们可以将它理解为一个含有参数的闭包。当我 们使用@use_logging(level="warn")调用的时候,Python 能够发现这一层的封装,并把参数传递到装饰器的环境中。

    @use_logging(level="warn")等价于@decorator

  • 相关阅读:
    计网 | 文件传输协议
    Java | JDK8 | Integer
    2.项目管理-应用工具
    1.需求管理
    1.短视频运营基础
    10.视频效果---变形稳定器
    9.时间重映射
    8.效果控件之移动&&缩放
    7.标记
    6.子剪辑与合并剪辑
  • 原文地址:https://www.cnblogs.com/a-little-v/p/10705298.html
Copyright © 2020-2023  润新知