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)
    
  • 相关阅读:
    gym102215题解
    Codeforces6E_Exposition
    Codeforces893F_Subtree Minimum Query
    是男人就过八题A_A String Game
    gym101666题解
    gym102201E_Eat Economically
    gym102346题解
    C++输入函数用法
    迷宫问题(BFS+保存路径) POJ No.3984
    【BFS】迷宫的最短路径问题
  • 原文地址:https://www.cnblogs.com/jiaoran/p/14308125.html
Copyright © 2011-2022 走看看