python装饰器

装饰器可以让其他函数在不需要做任何代码变动的前提下增加额外功能,它的返回值也是一个函数对象。
实质: 是一个函数
参数:是你要装饰的函数名(并非函数调用)
返回:是装饰完的函数名(也非函数调用)
作用:为已经存在的对象添加额外的功能
特点:不需要对对象做任何的代码上的变动
譬如,一个简单的装饰器:

def decorator(func):
    def wrapper():
        print 'this is function: {}'.format(func.__name__)
        return func()
    return wrapper

@decoration
def say_hello():
    print 'hello!'

在这个装饰器中,被装饰函数不需要带任何参数。如果被装饰的函数需要传入参数,则可使用可变参数(args)和关键字参数(kwargs),有了这两个参数,装饰器就可以用于任意目标函数了。
一个计时的装饰器:

import time
def time_consuming(func):
    def wrapper(*args, **kwargs):
        t0 = time.time()
        back = func(*args, **kwargs)
        return back, time.time() - t0
    return wrapper

@time_consuming
def say_hello():
    print 'hello!'
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 部分细节自己改了点,也加了点自己例子,基本上属于转载。转载出处:https://my.oschina.net/le...
    洛克黄瓜阅读 6,120评论 0 3
  • 呵呵!作为一名教python的老师,我发现学生们基本上一开始很难搞定python的装饰器,也许因为装饰器确实很难懂...
    TypingQuietly阅读 19,806评论 26 186
  • 原文出处: dzone 译文出处:Wu Cheng(@nullRef) 1. 函数 在python中,函数通过...
    DraculaWong阅读 3,541评论 0 3
  • 原文出处: dzone 译文出处:Wu Cheng(@nullRef) 搞定装饰器需要你了解一些函数式编程的概...
    cf6d95617c55阅读 1,792评论 0 1
  • Python 中的函数和 Java、C++不太一样,Python 中的函数可以像普通变量一样当做参数传递给另外一个...
    stoneyang94阅读 5,171评论 1 4

友情链接更多精彩内容