NameError:未定义全局名称'reduce'

anh*_*dbk 28 python reduce

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

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

if __name__=='__main__':
    main()
Run Code Online (Sandbox Code Playgroud)

Gre*_*ill 58

我猜这个:

  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))
Run Code Online (Sandbox Code Playgroud)

  • "因为它不常用"是有争议的. (13认同)

chi*_*him 6

# Import reduce from functools
from functools import reduce
Run Code Online (Sandbox Code Playgroud)

允许您使用,reduce就像它是内置函数一样.

def main():
    def add(x,y): return x+y
    reduce(add, range(1, 11))
Run Code Online (Sandbox Code Playgroud)