आप Python 3 के साथ Python 2 कोडबेस चलाने की कोशिश कर रहे हैं । Python 3 में xrange()
इसका नाम बदल दिया गया range()
।
इसके बजाय पाइथन 2 के साथ गेम चलाएं। जब तक आप जानते हैं कि आप क्या कर रहे हैं, इसे पोर्ट करने की कोशिश न करें, सबसे अधिक संभावना है कि xrange()
बनाम से अधिक समस्याएं होंगी range()
।
रिकॉर्ड के लिए, आप जो देख रहे हैं वह सिंटैक्स त्रुटि नहीं है, बल्कि इसके बजाय एक रनटाइम अपवाद है।
यदि आप जानते हैं कि आपका क्या कर रहे हैं और पायथन 3 के साथ सक्रिय रूप से पायथन 2 कोडबेस बना रहे हैं, तो आप अपने मॉड्यूल के लिए वैश्विक नाम को उपनाम के रूप में जोड़कर कोड को पा सकते हैं range
। (ध्यान रखें कि आपको पायथन 2 कोडबेस में किसी भी मौजूदा उपयोग को अपडेट करना पड़ सकता है, यह सुनिश्चित करने के लिए कि आपको अभी भी पायथन 3 में एक सूची ऑब्जेक्ट मिल रहा है):range()
list(range(...))
try:
# Python 2
xrange
except NameError:
# Python 3, xrange is now named range
xrange = range
# Python 2 code that uses xrange(...) unchanged, and any
# range(...) replaced with list(range(...))
या के सभी उपयोगों की जगह xrange(...)
के साथ range(...)
codebase में और उसके बाद अजगर 2 के साथ अजगर 3 वाक्य रचना संगत बनाने के लिए एक अलग शिम का उपयोग करें:
try:
# Python 2 forward compatibility
range = xrange
except NameError:
pass
# Python 2 code transformed from range(...) -> list(range(...)) and
# xrange(...) -> range(...).
उत्तरार्द्ध उन कोडबेस के लिए बेहतर है जो केवल लंबे समय में पायथन 3 के संगत होने का लक्ष्य रखना चाहते हैं, फिर जब भी संभव हो तो केवल पायथन 3 सिंटैक्स का उपयोग करना आसान होता है।