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

def calc_prod(lst): def lazy_prod(): def f(x, y): return x * y return reduce(f, lst, 1) return lazy_prod f = calc_prod([1, 2, 3, 4]) print (f()) Traceback (most recent call last): File "<ipython-input-28-5166a7a3086

def calc_prod(lst):

    def lazy_prod():

        def f(x, y):

            return x * y

        return reduce(f, lst, 1)

    return lazy_prod


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

print (f())

Traceback (most recent call last):


  File "<ipython-input-28-5166a7a30861>", line 9, in <module>

    print (f())


  File "<ipython-input-28-5166a7a30861>", line 5, in lazy_prod

    return reduce(f, lst, 1)


NameError: name 'reduce' is not defined


正在回答

1 回答

你用的是python2的语法,但是你的环境是python3的环境。reduce函数在python3的内建函数移除了,放入了functools模块。可以在前面添加这样一行代码:

from functools import reduce


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

举报

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

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

进入课程

def calc_prod(lst): def lazy_prod(): def f(x, y): return x * y return reduce(f, lst, 1) return lazy_prod f = calc_prod([1, 2, 3, 4]) print (f()) Traceback (most recent call last): File "<ipython-input-28-5166a7a3086

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