zoukankan      html  css  js  c++  java
  • Python-装饰器中保留被装饰函数元数据

     函数的元数据包括哪些呢?

      1. 函数名    .__name__

      2. 函数注释   .__doc__

      ...

    那,如何保留被装饰函数元数据,通过wraps装饰器保留被装饰函数的元数据

    import time
    from functools import wraps
    
    
    def get_run_time(func):
        # 通过 wraps保留原函数的元数据
        @wraps(func)
        def wrapper(*args, **kwargs):
            r = func(*args, **kwargs)
            # 输出函数元数据
            print(func.__name__)
            print(func.__doc__)
            return r
        return wrapper
    
    
    @get_run_time
    def bei_men_chui_xue(name):
        """北门吹雪"""
        time.sleep(1)
        return "Hai, %s" % name
    
    
    # 获取返回值
    r = bei_men_chui_xue("北门吹雪")
    print(r)
    

      

    经验:

      1. 直接使用装饰器将会丢失被装饰函数的元数据,不想获取被装饰函数元数据则不关心,直接使用装饰器

      2. 想要获取被装饰函数元数据则需要通过另外的装饰器 @wraps装饰元函数获取被装函数元数据

  • 相关阅读:
    CSS中的单位简介
    grid-layout
    position
    form
    objects
    个人介绍
    第十二周作业:
    第十一周作业
    第十周web作业
    第九周作业
  • 原文地址:https://www.cnblogs.com/2bjiujiu/p/7291623.html
Copyright © 2011-2022 走看看