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''