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

这个问题有点不能理解,望Pythoner朋友指点指点

考察一个@log的定义:下面的return f(x)返回的是什么?能返回 print 'call ' + f.__name__ + '()...' 这个过程吗?

def log(f):
   def fn(x):
       print 'call ' + f.__name__ + '()...'
       return f(x)
   return fn


正在回答

2 回答

fn是你这个装饰器最终返回的结果,返回的是一个函数fn,而fn因为是一个函数,函数里执行两步操作,第一print一个字符串,第二返回调用f(x)的结果,两个return不一样不要搞混了,一个是返回一个函数执行的结果,一个返回的是一个函数

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

return f(x)是内部定义函数fn(x)的返回值,值是运行f(x)后的结果。在返回前一语句是print

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

举报

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

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

进入课程

这个问题有点不能理解,望Pythoner朋友指点指点

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