2009-03-17 12 views
14

मैंने देखा कि Python2.6 ने अगले() को list of global functions में जोड़ा है।पायथन 2.6 ने वैश्विक वैश्विक() फ़ंक्शन क्यों जोड़ा?

next(iterator[, default])

Retrieve the next item from the iterator by calling its next() method. 

तो default दिया जाता है, यह दिया जाता है, तो इटरेटर समाप्त हो रहा है, अन्यथा StopIteration उठाया जाता है।

इसे जोड़ने के लिए प्रेरणा क्या थी? next(iterator) के साथ आप क्या कर सकते हैं कि आप रोकथाम को संभालने के लिए iterator.next() और except खंड के साथ नहीं कर सकते हैं?

उत्तर

18

यह len() जैसे कार्यों के साथ स्थिरता के लिए है। मेरा मानना ​​है कि next(i)i.__next__() आंतरिक रूप से कॉल करता है।

http://www.python.org/dev/peps/pep-3114/

+0

+1। इसी कारण से पाइथन में अंतर्निहित लेन() फ़ंक्शन है। Guido के तर्क के लिंक के लिए http://stackoverflow.com/questions/83983/why-isnt-the-len-function-inherited-by- शब्दकोश-and-lists-in-python पर स्वीकृत उत्तर देखें। –

+0

+1: दस्तावेज़ों को उद्धृत करें। –

0

यह __next__ आंतरिक रूप से कॉल देखें, लेकिन यह यह देखने के लिए और अधिक 'कार्यात्मक' 'वस्तु उन्मुख' से बना देता है। आपको लगता है कि यह सिर्फ मेरी राय है, लेकिन मुझे i.next() की बजाय next(i) पसंद नहीं है। लेकिन स्टीव मैक ने कहा, यह स्थिरता के साथ थोड़ा सा मदद करता है।

10

ध्यान दें कि अजगर में 3.0+ next विधि __next__ को नाम दिया गया है। यह स्थिरता के कारण है। next एक विशेष विधि है और परंपरागत तरीकों का नाम परंपरागत (पीईपी 8) द्वारा डबल अग्रणी और पिछला अंडरस्कोर के साथ रखा जाता है। विशेष तरीकों का अर्थ सीधे नहीं कहा जाता है, यही कारण है कि next फ़ंक्शन में बनाया गया था।

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