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

方法二:通过高阶函数返回新函数

f1 = new_fn(f1) #这里有疑惑,f1变量接收了new_fn(f)函数返回的fn(x)函数,
                #不会影响后续fn(x)  里面调用的f1(x)函数吗?
print f1(5)


正在回答

2 回答

首先,f1 = new_fn(f1) 得到的f1只是一个变量而已,而且返回的是fn也只是也只是一个变量,应该说f1变量接收了new_fn(f)函数返回的fn变量!而不是fn(x)函数,并且,原本的f1(x)的定义还在那里,并没有改变f1(x)的定义啊。关键是要区分f1和f1(x)代表的是什么。当用这个函数变量时 print f1(5),此时的函数完全就不是def 定义的函数,只不过名字一样而已

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

Ares_JY 提问者

非常感谢!
2017-05-25 回复 有任何疑惑可以回复我~
#2

Ares_JY 提问者

那如果我想要调用原来的f1函数,那该怎么调用?
2017-05-25 回复 有任何疑惑可以回复我~

我觉得是按顺序执行语句。①fn(x)调用f1(x)时,f1函数是原定义;②装饰完之后再赋值给f1,这时候f1的原定义被隐藏,再调用f1时就只能获得加上log后的结果。

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

举报

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

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

进入课程

方法二:通过高阶函数返回新函数

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