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

装饰器,好难懂

这里是f1函数指向了new_fn(f1)  这时候那f1函数岂不是就指向了new_fn函数?

正在回答

1 回答

这时候那f1函数岂不是就指向了new_fn函数?

不是这样的,f1指向了new_fn(f1)的返回值,不是new_fn

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

冬012

箭头两侧是同等的吗?为什么我在python中运行时提示错误“name 'new_fn' is not defined” 代码如下: @new_fn def f1(x): return x*2 def new_fn(f): def fn(x): print 'call' + f.__name__ + '()' return f(x) return fn 我是直接换上去的
2016-04-17 回复 有任何疑惑可以回复我~
#2

冬012

找到问题了, def f1(x): return x*x def new_fn(f): @new_fn def fn(x): print 'call' + f.__name__ + '()' return f(x) return fn 这样写就对了,果然不能生搬硬套啊...............看老师把@new_fn放在第一行,我也就照搬到第一行了....
2016-04-17 回复 有任何疑惑可以回复我~

举报

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

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

进入课程

装饰器,好难懂

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