课程
/后端开发
/Python
/python进阶
f1 = new_fn(f1) #这里有疑惑,f1变量接收了new_fn(f)函数返回的fn(x)函数, #不会影响后续fn(x) 里面调用的f1(x)函数吗? print f1(5)
2017-05-24
源自:python进阶 2-11
正在回答
首先,f1 = new_fn(f1) 得到的f1只是一个变量而已,而且返回的是fn也只是也只是一个变量,应该说f1变量接收了new_fn(f)函数返回的fn变量!而不是fn(x)函数,并且,原本的f1(x)的定义还在那里,并没有改变f1(x)的定义啊。关键是要区分f1和f1(x)代表的是什么。当用这个函数变量时 print f1(5),此时的函数完全就不是def 定义的函数,只不过名字一样而已
Ares_JY 提问者
我觉得是按顺序执行语句。①fn(x)调用f1(x)时,f1函数是原定义;②装饰完之后再赋值给f1,这时候f1的原定义被隐藏,再调用f1时就只能获得加上log后的结果。
举报
学习函数式、模块和面向对象编程,掌握Python高级程序设计