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

不太理解 装饰器中 return f(x)

不太理解 装饰器中 return f(x)

如果写成这样就会无限循环:

def f1(x):

    return x*2

def new_fn(f):

    def fn(x):

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

        return f1(x)

    return fn

f1=new_fn(f1)

print f1(5)


正在回答

2 回答

老师 ppt上的是return f(x) 因为f1函数在f1=new_fn(f1)的时候已经作为参数传入了new_fn(f)这个函数

即参数f就是你传入的f1函数

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

其实包装器就是将对把函数当做一个参数传进去,然后在这个函数正式执行前或者后进行一些处理

1.函数执行前处理

2.执行函数

3.函数执行后处理

还有你最后调用f1= new_fn(1)会出现死循环情况,这种写法叫做递归

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

举报

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

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

进入课程

不太理解 装饰器中 return f(x)

我要回答 关注问题
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号