NameError:未定义全局名称“reduce”

Posted

技术标签:

【中文标题】NameError:未定义全局名称“reduce”【英文标题】:NameError: global name 'reduce' is not defined 【发布时间】:2012-04-30 20:49:11 【问题描述】:

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

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

if __name__=='__main__':
    main()

【问题讨论】:

reduce 被移出内置函数的原因之一是因为它经常被用于加法,其中sum 更可取(在这种情况下,您可以只使用@987654324 @ 或 sum(xrange(1, 11)) 在 Python 2 中)。另请注意,在标准库中有一个与您的 add 等效的函数:operator.add 【参考方案1】:

我猜:

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

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

import functools

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

【讨论】:

“既然不常用”是有争议的。【参考方案2】:

还有

# Import reduce from functools
from functools import reduce

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

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

【讨论】:

以上是关于NameError:未定义全局名称“reduce”的主要内容,如果未能解决你的问题,请参考以下文章

熊猫不进口吗? 'NameError:未定义全局名称'pandas''

NameError:未定义全局名称“QColor”

NameError:未定义全局名称“lower”

NameError:未定义全局名称

DD.close() NameError: 全局名称 'DD' 未定义

NameError:未定义全局名称“myLogFile”