2012-04-19 25 views
23

मैं पाइथन के लिए नया हूं। क्या आप कृपया मुझे बताएं कि निम्नलिखित कोड में क्या गलत है? जब मैं इसे चलाता हूं, तो मुझे "नेमइरर: ग्लोबल नेम 'कम करने का त्रुटि संदेश नहीं मिला है"। मैंने गोल्ज से पूछा लेकिन यह बेकार है। :(नाम त्रुटि: वैश्विक नाम 'कम' परिभाषित नहीं किया गया है

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

if __name__=='__main__': 
    main() 
+3

कारणों 'reduce' बनाया-इन से बाहर ले जाया गया था में से एक है क्योंकि यह अक्सर इसके अलावा, जहां' sum' बेहतर है के लिए इस्तेमाल किया जा रहा था (इस मामले में, तुम बस 'योग कर सकता है (रेंज (1, 11)) ', या' योग (xrange (1, 11)) 'पायथन 2 में)। ध्यान दें कि मानक लाइब्रेरी में आपके समतुल्य 'add' फ़ंक्शन' है: 'operator.add'। – James

उत्तर

46

मुझे लगता है कि करने के लिए जा रहा हूँ कि:

  1. आप अजगर 3 का उपयोग कर रहे हैं, और
  2. आप एक ट्यूटोरियल पायथन 2.

के लिए बनाया गया अनुसरण कर रहे हैं reduce फ़ंक्शन, चूंकि इसका सामान्य रूप से उपयोग नहीं किया जाता है, इसलिए पाइथन 3 में अंतर्निहित कार्यों से हटा दिया गया था। यह अभी भी functools मॉड्यूल में उपलब्ध है, इसलिए आप यह कर सकते हैं:

import functools 

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

देखें http://docs.python.org/release/3.0.1/whatsnew/3.0.html –

+0

:) बहुत बहुत धन्यवाद! मुझे मिलगया। – anhldbk

+9

"चूंकि इसका उपयोग आमतौर पर नहीं किया जाता है" विवादित है। – hcalves

1

इसके अलावा

# Import reduce from functools 
from functools import reduce 

आप reduce उपयोग करने के लिए जैसे कि यह एक समारोह में बनाए गए थे देता है।

def main(): 
    def add(x,y): return x+y 
    reduce(add, range(1, 11)) 
संबंधित मुद्दे

 संबंधित मुद्दे