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

这样写为什么不对,把f()改成f就对了

def calc_prod(lst):

    def cj(x,y):

        return x*y

    return reduce(cj,lst)

    

f = calc_prod([1, 2, 3, 4])

print f()


正在回答

3 回答

因为f()表示运行f这个函数,而在你的代码中f不是一个函数,只是一个普通变量,所以f()自然就不对,而该变量接受了calc_prod([1, 2, 3, 4])的值,所以print f输出的实际上就是calc_prod([1, 2, 3, 4])的运行结果

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

因为你

def calc_prod(lst):

    def cj(x,y):

        return x*y

    return reduce(cj,lst)

代码最后一行,return reduce(cj,lst),也就是说f = reduce(),所以后面输出print f相当于print reduce().如果你加上括号,就变成这样,print reduce()()

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

因为返回的cal_prod返回的是一个函数, 如果直接返回列表就对了

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

举报

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

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

进入课程

这样写为什么不对,把f()改成f就对了

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

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

帮助反馈 APP下载

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

公众号

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