这段python代码是什么意思,求大神!!

import time
def performance(f):
def fn(*args, **kw):
t1 = time.time()
r = f(*args, **kw)
t2 = time.time()
print 'call %s() in %fs' % (f.__name__, (t2 - t1))
return r
return fn

@performance
def factorial(n):
return reduce(lambda x,y: x*y, range(1, n+1))
print factorial(10)

performance是一个装饰器,用于统计程序的执行时间。
装饰器(decorator)是一种高级Python语法。装饰器可以对一个函数、方法或者类进行加工。装饰器就是一个函数,与普通函数不同的是装饰器的输入参数是一个函数。
@performance
def factorial(n):
等价于
performance(factorial)(n)追问

print语句里是什么意思啊

追答

'call %s() in %fs'是格式字符串,%s是参数待替换的位置
(f.__name__, (t2 - t1))是格式字符串传入的参数,参数用一个元组来表示
中间的%是分隔符
f.__name__:__name__是一个特殊方法,存储的是函数的名称,每一个函数都会自动有这个方法

追问

装饰器这儿感觉好难理解。。。。

温馨提示:答案为网友推荐,仅供参考
相似回答