30

我是 Python 新手。你能告诉我下面的代码有什么问题吗?当我运行它时,我收到一条错误消息“NameError:未定义全局名称'reduce'”。我问过古尔格,但没用。:(

def main():
    def add(x,y): return x+y
    reduce(add, range(1, 11))

if __name__=='__main__':
    main()
4

2 回答 2

61

我会猜测:

  1. 您正在使用 Python 3,并且
  2. 您正在学习专为 Python 2 设计的教程。

reduce函数由于不常用,已从 Python 3 的内置函数中删除。它仍然在functools模块中可用,因此您可以执行以下操作:

import functools

def main():
    def add(x,y): return x+y
    functools.reduce(add, range(1, 11))
于 2012-04-19T10:46:55.233 回答
11

# Import reduce from functools
from functools import reduce

允许您像使用reduce内置函数一样使用它。

def main():
    def add(x,y): return x+y
    reduce(add, range(1, 11))
于 2018-02-28T09:11:10.377 回答