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)
    
  • 相关阅读:
    [LuoGu] P1004 方格取数
    [LuoGu] P1018 乘积最大
    [LuoGu] P2758 编辑距离
    [JZOJ] 01知多少
    [LuoGu] P1731 生日蛋糕
    $mathcal{Const,Inline,Register}$用法总结
    T2027 蜈蚣
    T57274 黑暗城堡
    P2312 解方程
    AT2412 最大の和
  • 原文地址:https://www.cnblogs.com/jiaoran/p/14308125.html
Copyright © 2011-2022 走看看