这三个函数之间是什么关系?
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是谁? 这几节有点蒙啊,求大神帮忙解释一下!!!!!万谢!!!!!
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是谁? 这几节有点蒙啊,求大神帮忙解释一下!!!!!万谢!!!!!
2016-09-05
我是个新手,下面是我的理解,有不当的部分请高手指正:
我的理解是这样的:
所谓的修饰就是重新编写一个高阶函数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。
以上是我的理解。
举报