Python装饰器

当希望增加函数功能,同时又不改变函数定义的情况下,可以使用装饰器(decorator)。

import time, functools
def printTime(text):#装饰器自定义文字,这句可选
    def decorator(func):#将函数作为参数传入装饰器
        @functools.wraps(func)#确保函数本身属性不变,固定写法
        def log(*args, **kw):#自定义装饰器函数,参数不固定可以适配任意函数
            print("%s%s%s" % (func.__name__, text, time.time()))#打印函数执行时间
            return func(*args, **kw)
        return log
    return decorator

@printTime('fast执行时间是')#装饰器调用
def fast(x, y):
    return x + y

f = fast(11, 22)
print(f)
-----------------------执行结果-------------------------
fastfast执行时间是1544147487.86
33
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 部分细节自己改了点,也加了点自己例子,基本上属于转载。转载出处:https://my.oschina.net/le...
    洛克黄瓜阅读 6,025评论 0 3
  • 本文为《爬着学Python》系列第四篇文章。从本篇开始,本专栏在顺序更新的基础上,会有不规则的更新。 在Pytho...
    SyPy阅读 7,190评论 4 11
  • Python装饰器 定义了一个函数 想在运行时动态增加功能 又不想改动函数本身代码 通过高阶函数返回新函数 如何调...
    Dozing阅读 2,312评论 0 0
  • 闭包和装饰器 1.8 闭包和装饰器 学习目标 1. 能够说出闭包的定义形式 2. 能够说出装饰器的实现形式 ...
    Cestine阅读 3,550评论 0 0
  • 从朋友推荐看~这样读书就够了~到参加参拆书帮线上学习,这一个月,让我痛并快乐着。痛就是,为了每天教作业,常常熬夜睡...
    雪_5894阅读 1,202评论 3 3