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

这三个函数之间是什么关系?

def f1()   --- def new_fn(f):    def fn(x):        print'call' + f._name_+'()"        return f(x)    return fn 问题一:在这个代码当中new_fn是fn的高阶函数吗? 问题二:f1和下面两个定义函数之间没有调用的话,是不是就没有关系? 问题三:new_fn(f)这个函数传递的参数f是一个函数吗?这个f是谁? 这几节有点蒙啊,求大神帮忙解释一下!!!!!万谢!!!!!

正在回答

3 回答

我是个新手,下面是我的理解,有不当的部分请高手指正:

我的理解是这样的:

所谓的修饰就是重新编写一个高阶函数new_fn(),把要修饰的函数f1()作为参数传递给高阶函数new_fn(f1)。

代码应该是这么执行的:

将函数f1传递给new_fn(f1)后,返回的是fn,可以看做是返回的是fn的代码块:


def fn(x):

    print 'call' + f._name_ +'()'

    return f1(x)

当对new_fn()调用后,赋值给另外一个变量g1,相当于就把变量g1指向了fn(),再对g1()调用,比如说g1(5)就把数值5传送给fn,即fn(5)。就可以执行print 'call' + f._name_ +'()',并返回f1(5) = 10。

以上是我的理解。

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

緣来

为什么f=f1
2017-07-29 回复 有任何疑惑可以回复我~

f是函数,不是参数。

fn也是函数,这个要认清楚。

所以最后返回的是函数,所以之后运用的时候是f()

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

我也刚学,不好意思,找其它人吧,我也很想能够回答你

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

举报

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

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

进入课程

这三个函数之间是什么关系?

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