def 最后一定要加return吗? 闭包里的最后一个return有什么讲究?
请看下面两个代码,为什么前者的return是被装饰的参数,后者的return用r而不用f?
代码一:
def log(f):
def fn(x):
print 'call ' + f.__name__ + '()...'
return f(x)
return fn
代码二:
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