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

不太理解 装饰器中 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进阶
  • 参与学习       255665    人
  • 解答问题       2949    个

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

进入课程

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

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