zoukankan      html  css  js  c++  java
  • Python的装饰器是什么?

    装饰器本质是一个可调用的函数,用于修正函数或类,它可以让其他函数在不需要做任何代码改动的前提下增加额外功能。
    接收一个函数作为参数,添加一些功能,然后返回它。
    Multiple 多重装饰器按照应用的顺序依次执行。

    主要有以下一些场景:

    • 引入日志
    • 函数执行时间统计
    • 执行函数前预备处理
    • 执行函数后的清理功能
    • 权限校验等场景
    • 缓存

    示例一

    import functools
    
    def deco(func):
        @functools.wraps(func) #加在最内层函数正上方
        def wrapper(*args, **kwargs):
            return func(*args, **kwargs)
        return wrapper
    
    @deco
    def index():
        "还好还好"
        x = 10
        print('from index')
    
    print(index.__name__)
    print(index.__doc__)
    
    # 加@functools.wraps
    # index
    # 还好还好
    
    # 不加@functools.wraps
    # wrapper
    # None
    

    示例二

    def test_decorator(func):
        def function_wrapper(x):
            print("Before calling " + func.__name__)
            res = func(x)
            print(res)
            print("After calling " + func.__name__)
        return function_wrapper
    
    
    @test_decorator
    def sqr(n):
        return n ** 2
    sqr(54)
    
  • 相关阅读:
    js检测对象中是否存在某个属性
    ES6 笔记
    DataSet 用法
    CommandBehavior.CloseConnection有何作用
    SqlDataReader
    Listview.Finditem()函数用法
    Instr()函数用法
    StringBuilder与StringBuffer的区别
    [DllImport("kernel32.dll")]使用
    extern用法
  • 原文地址:https://www.cnblogs.com/jiaoran/p/14308125.html
Copyright © 2011-2022 走看看