python functools.wraps 实例

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python functools.wraps 实例相关的知识,希望对你有一定的参考价值。

python functools.wraps 实例解读

1. 未使用wraps的实例

#!/usr/bin/env python
# coding:utf-8
def logged(func): def with_logging(*args, **kwargs): ‘‘‘i am wraps‘s doc‘‘‘ print func.__name__ + " was called" return func(*args, **kwargs) return with_logging @logged def f(x): """i am original doc""" return x + x * x print f.__name__ # 期望的是原本的名字f,结果换成了装饰器里的新函数的名字with_logging print f.__doc__ # 期望的是原本的注释,加了个装饰器成了新加装饰器里的注释了

 

2. 使用了wraps的实例

from functools import wraps


def logged(func):
    @wraps(func)
    def with_logging(*args, **kwargs):
        ‘‘‘i am wraps‘s doc‘‘‘
        print func.__name__ + " was called"
        return func(*args, **kwargs)

    return with_logging


@logged
def f(x):
    """i am original doc"""
    return x + x * x


print f.__name__  # prints ‘f‘
print f.__doc__  # prints ‘i am original doc‘

 



以上是关于python functools.wraps 实例的主要内容,如果未能解决你的问题,请参考以下文章

python functools.wraps装饰器模块

Python functools.wraps 等价于类

Python 中实现装饰器时使用 @functools.wraps 的理由

python functools.wraps装饰器模块

@functools.wraps(func)

python 牛逼的functools.py