为了账号安全,请及时绑定邮箱和手机立即绑定

谁能告诉我 def log(f): 的时候 return f(x) 是什么意思吗

重新定义f(x)的意思?

def log(f):
   def fn(x):
       print 'call ' + f.__name__ + '()...'
       return f(x)//////这里为什么要这样?什么意思
   return fn

正在回答

3 回答

假设A函数是原来的函数,B函数是用来装饰A函数的函数,C函数是B函数中定义的包装了A的函数。

讲解里面的factorial(n)是A函数,执行后有一个返回值。

log(f)函数是B函数,用来装饰A函数的。

log(f)中的fn(x)函数是包装了A的函数C。

装饰器的效果就是让A的名字指向C函数,所以最终调用A就是在调用C。A函数中有一个返回值,则C中必须也有一个返回值,这个返回值是原来的A的执行结果。所以fn(x)  函数中必须用“return f(x)”返回被装饰函数A的返回值,这样C函数的返回值和A函数是相同的。

2 回复 有任何疑惑可以回复我~

这个是为了保证输出,执行你之前没有装饰的函数。我的理解。就是为了保证经过装饰之后还是与原来的功能一样,只不过多了一些说明性的东西

3 回复 有任何疑惑可以回复我~

同问,看懂的来说一下。

0 回复 有任何疑惑可以回复我~
#1

兔子爱叫 提问者

看懂啦 那个是为了调用函数f(x) 也就是log(f)中的f 下面用到的@log 的意思翻译过来其实就是log=log(函数名) 这个函数名类似于实例 用来写具体怎么运行
2015-10-12 回复 有任何疑惑可以回复我~
#2

linjiexin 回复 兔子爱叫 提问者

你这回答真心看不懂答的是什么……
2015-11-17 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消
python进阶
  • 参与学习       255665    人
  • 解答问题       2949    个

学习函数式、模块和面向对象编程,掌握Python高级程序设计

进入课程

谁能告诉我 def log(f): 的时候 return f(x) 是什么意思吗

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信