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

用闭包我怎么都打印不出内部函数的结果,求指导

def new_fn(f):

    def fn(x):

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

        return x*5

    return fn

a=new_fn

print a(5)

这样打印,为什么结果是个地址,试了好几种方法,都打不出5*5,都是打印地址,求大神帮我解答为什么?

正在回答

2 回答

赋值号(=)右边写函数名和函数名()的意义是不同的,例如

1.  a=new_fn 和  2.  a=new_fn( )

1代表a指向new_fn函数,2代表a指向new_fn的返回值

也可以理解为,1的a就是一个函数,并没有执行new_fn,而2是执行new_fn之后,将结果赋值给a

你这段代码要想运行new_fn里面的fn函数,应该这么调用

a=new_fn

print a("某个参数")(5)          #(相当于b = a(“某个参数”),再print b(5))


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

def new_fn():

    def fn(x):

        #print 'call'+f._name_+'()'

        return x*5

    return fn

a=new_fn()

print a(5)

或者

def new_fn(x):

    def fn():

        #print 'call'+f._name_+'()'

        return x*5

    return fn

a=new_fn(5)

print a()


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

举报

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

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

进入课程

用闭包我怎么都打印不出内部函数的结果,求指导

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

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

帮助反馈 APP下载

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

公众号

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