品易云推流 关闭
文章 > Python基础教程 > python装饰器如何保留原函数信息

python装饰器如何保留原函数信息

头像

小妮浅浅

2021-04-30 15:56:21939浏览 · 0收藏 · 0评论

1、说明

使用装饰器时,原函数似乎没有改变,但其元信息发生了变化——此时的原函数实际上是包裹后的wrapper函数。

若要保留原始函数的元信息,可以通过内置@functools.wraps(func)实现:

@functools.wraps(func)的作用是通过update_wrapper和partial将目标函数的元信息复制到wrapper函数中。

2、实例

# def decorator
def decorator_with_args(*args, **kwargs):
    print('Step1: enter wrapper with args func.')
    print(args)
    print(kwargs)
 
    def decorator_func(func):
     @functools.wraps(func)
        def wrapper(*args, **kwargs):
            print('Step2: enter wrapper func.')
            return func(*args, **kwargs)
        return wrapper
    return decorator_func

以上就是python装饰器保留原函数信息的方法,希望对大家有所帮助。更多Python学习指路:python基础教程

关注公众号

关注公众号,随时随地在线学习

本教程部分素材来源于网络,版权问题联系站长!

底部广告图 底部广告图按钮