当希望增加函数功能,同时又不改变函数定义的情况下,可以使用装饰器(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