python装饰器的wraps作用

不加:

from functools import wraps
def my_decorator(func):
    def wper(*args, **kwargs):
        ‘‘‘decorator‘‘‘
        print(‘Calling decorated function...‘)
        return func(*args, **kwargs)
    return wper

@my_decorator
def example():
    """Docstring"""
    print(‘Called example function‘)

print(example.__name__, example.__doc__)#wper decorator

加:

from functools import wraps
def my_decorator(func):
    @wraps(func)
    def wper(*args, **kwargs):
        ‘‘‘decorator‘‘‘
        print(‘Calling decorated function...‘)
        return func(*args, **kwargs)
    return wper

@my_decorator
def example():
    """Docstring"""
    print(‘Called example function‘)

print(example.__name__, example.__doc__)#example Docstring

装饰器修复技术

原文地址:https://www.cnblogs.com/saolv/p/10325016.html

时间: 2024-08-29 17:42:55

python装饰器的wraps作用的相关文章

python装饰器中@wraps作用--修复被装饰后的函数名等属性的改变

Python装饰器(decorator)在实现的时候,被装饰后的函数其实已经是另外一个函数了(函数名等函数属性会发生改变),为了不影响,Python的functools包中提供了一个叫wraps的decorator来消除这样的副作用.写一个decorator的时候,最好在实现之前加上functools的wrap,它能保留原有函数的名称和docstring.废话不多说,上俩栗子就能搞明白! 实例一: 不加wraps # -*- coding=utf-8 -*- from functools imp

python学习之装饰器的wraps作用

未加@wraps # def tag(name):# def decorator(func):# def wrapper(text):# value=func(text)# return "<{name}>{value}</{name}>".format(name=name,value=value)# return wrapper# return decorator## @tag("p")# def my_upper(text):# valu

python 装饰器及标准库functools中的wraps

最近在看 flask的视图装饰器 时,忽然想起预(复)习一下python的装饰器. 这里有一篇比较好的讲解装饰器的书写的 Python装饰器学习(九步入门) . 这里不单独记录装饰器的书写格式了,重点是工作流程. 首先常见的 装饰器 格式就是通过@语法糖,简便的写法,让流程有些不太清楚. 装饰器不带参数的情况下: def deco(func):     def _deco():         print("before myfunc() called.")         func(

python装饰器中的@wraps

python装饰器中的@wraps 第一段代码:没有添加@wraps def user_login_confirm(name): print('我是', name) def deco_fun(view_func): print('准备变身...') def wrapper(): view_func() print('变身完成...') return wrapper return deco_fun @user_login_confirm('小辣椒') def tony(): print('我是',

对Python装饰器的个人理解方法

0.说明 在自己好好总结并对Python装饰器的执行过程进行分解之前,对于装饰器虽然理解它的基本工作方式,但对于存在复杂参数的装饰器(装饰器和函数本身都有参数),总是会感到很模糊,即使这会弄懂了,下一次也很快忘记,其实本质上还是没有多花时间去搞懂其中的细节问题. 虽然网络上已经有很多这样的文章,但显然都是别人的思想,因此自己总是记不牢,所以花点时间自己好好整理一下. 最近在对<Python核心编程>做总结,收获了不少,下面分享一下我自己对于Python装饰器的理解,后面还提供了一个较为复杂的P

Python 装饰器学习心得

最近打算重新开始记录自己的学习过程,于是就捡起被自己废弃了一年多的博客.这篇学习笔记主要是记录近来看的有关Python装饰器的东西. 0. 什么是装饰器? 本质上来说,装饰器其实就是一个特殊功能的函数,这个特殊的功能就是:装饰另一个函数.举一个最简单的例子来说: 1 def identify(f): 2 print 'Decorator identify called.' 3 return f 这里identify其实是一个装饰器,这个装饰器对输入的参数f不进行任何修饰,然后返回这个参数.其中的

python装饰器Decorators

http://blog.csdn.net/pipisorry/article/details/41902599 Introduction 装饰器Decorators是一个很著名的设计模式,经常被用于有切面需求的场景,较为经典的有插入日志.性能测试.事务处理等.装饰器是解决这类问题的绝佳设计,有了装饰器,我们就可以抽离出大量函数中与函数功能本身无关的雷同代码并继续重用.概括的讲,装饰器的作用就是为已经存在的对象添加额外的功能.装饰器用于在不改变原函数代码的情况下修改已存在的函数.常见场景是增加一句

Python装饰器的学习笔记(转载)

Python装饰器的学习笔记 2017-05-18 程序员共读 来自:标点符的<Python装饰器的学习笔记> 链接:http://www.biaodianfu.com/python-decorator.html 原文:http://stackoverflow.com/questions/739654/how-to-make-a-chain-of-function-decorators-in-python#answer-1594484 装饰器(decorator)是一种高级Python语法.可

装饰模式和python装饰器

装饰器和装饰模式 先给出两者的定义: - 装饰器:装饰器是一个很著名的设计模式,经常被用于有切面需求的场景,较为经典的有插入日志.性能测试.事务处理等.装饰器是解决这类问题的绝佳设计,有了装饰器,我们就可以抽离出大量函数中与函数功能本身无关的雷同代码并继续重用.概括的讲,装饰器的作用就是为已经存在的对象添加额外的功能. - 装饰模式:在不必改变原类文件和使用继承的情况下,动态地扩展一个对象的功能.它是通过创建一个包装对象,也就是装饰来包裹真实的对象. 装饰器是python的高级函数应用的一个技巧