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

最里面的一层函数只return f(x),那为什么输出还有call...

不应该返回值只有fx才对吗?

正在回答

2 回答

def log(f):
    def fn(x):
        print 'call ' + f.__name__ + '()...'
        return f(x)
    return fn
  1. 以上代码定义一个装饰器log(f)。当常规方法前面有装饰器符号@的时候,调用此方法。

  2. 调用时,先定义一个常规函数的高阶函数(line 2 - line 4),并返回此高阶函数(line 5)。

  3. 执行返回的高阶函数,进入其内部(line 3 - line 4),执行print动作(line 3),并执行原函数(line 4)。

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

weixin_慕工程8144775 提问者

我懂了,print语句只是打印出来一个东西,这个东西并不会返回出来并继续被调用。谢谢!
2019-02-27 回复 有任何疑惑可以回复我~

看不懂你在问什么……请附必要的图或代码

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

weixin_慕工程8144775 提问者

十分抱歉! def log(f): def fn(x): print 'call ' + f.__name__ + '()...' return f(x) return fn 这一段里,定义fn(x)的时候返回的不是只是f(x)吗,为什么在使用这个装饰器的时候print后面的这个字符串也可以返回出来呢?
2019-02-27 回复 有任何疑惑可以回复我~

举报

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

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

进入课程

最里面的一层函数只return f(x),那为什么输出还有call...

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