web-dev-qa-db-ja.com

NameError:グローバル名 'reduce'が定義されていません

Pythonは初めてです。次のコードの何が問題になっていますか?実行すると、「NameError:グローバル名 'reduce'が定義されていません」というエラーメッセージが表示されました。私はグールジに尋ねましたが、それは役に立たないです。 :(

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

if __name__=='__main__':
    main()
29
anhldbk

私はそれを推測するつもりです:

  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))
55
Greg Hewgill

また

# Import reduce from functools
from functools import reduce

reduceを組み込み関数のように使用できます。

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