python装饰器如何解决元信息丢失?

  • 更新时间:2021-08-01 08:48:02
  • 编辑:谭暖瞳
本站收集了一篇相关的编程文章,网友詹忻乐根据主题投稿了本篇教程内容,涉及到Python相关内容,已被863网友关注,下面的电子资料对本篇知识点有更加详尽的解释。

参考资料

正文内容

《python装饰器如何解决元信息丢失?》是一篇值得学习的技术文章,知识点总结的很细,改了一下错误代码,希望对网友有用。

python装饰器如何解决元信息丢失?

1、问题

使用装饰器可以大幅度提高代码的复用性,但是缺点就是原函数的元信息丢失了。

# 装饰器
def logged(func):
    def logging(*args, **kwargs):
        print(func.__name__)
        print(func.__doc__)
        func(*args, **kwargs)
    return logging
 
# 函数
@logged
def f(x):
    """函数文档,说明"""
    return x * x
 
print(f.__name__) # 输出 logging
print(f.__doc__) # 输出 None

2、解决办法非常简单,导入 from functools import wraps ,修改代码为下述内容:

from functools import wraps
# 装饰器
def logged(func):
    @wraps(func)
    def logging(*args, **kwargs):
        print(func.__name__)
        print(func.__doc__)
        func(*args, **kwargs)
    return logging
 
# 函数
@logged
def f(x):
    """函数文档,说明"""
    return x * x
 
print(f.__name__) # 输出 f
print(f.__doc__)  # 输出 函数文档,说明

以上就是python装饰器解决元信息丢失烦扰方法,希望对大家有所帮助。更多Python学习推荐:python教学

相关教程

  • Python利用pandas处理Excel数据的应用详解

    这篇文章主要介绍了Python利用pandas处理Excel数据的应用详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

    发布时间:2019-06-26

  • Python3爬虫使用Fidder实现APP爬取示例

    这篇文章主要介绍了Python3爬虫使用Fidder实现APP爬取示例,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧

    发布时间:2019-06-03

用户留言