एक पुनरावृत्त को एक वस्तु के रूप में शिथिल रूप से परिभाषित किया जा सकता है जो इन-बिल्ट विधि iter () में पारित होने पर एक पुनरावर्तक उत्पन्न करेगा। किसी वस्तु के चलने योग्य होने के लिए कुछ शर्तें हैं, वर्ग की वस्तु को दो उदाहरण मेहतोद को परिभाषित करने की आवश्यकता है:__len__ और __getitem__। एक वस्तु जो इन शर्तों को पूरा करती है जब विधि iter() को पास किया जाता है तो एक पुनरावर्तक उत्पन्न होता है।
आइए नीचे दिए गए उदाहरण को समझें, चलने योग्य को समझने के लिए -
स्ट्रिंग में चार के लिएstring = "Tutorialspoint" for char in string: print (char)
आउटपुट
T u t o r i a l s p o i n t
कोड के ऊपर __getitem__(index) विधि का उपयोग करें जो तत्व को इंडेक्स द्वारा निर्दिष्ट स्थान पर लौटाएगा।
तो, हमारा उपरोक्त कोड -
- इंडेक्स 0 से शुरू करें
- कॉल स्ट्रिंग.__getitem__(index)
- इंडेक्स त्रुटि उठाई गई? रुकें
- लूप का रन बॉडी
- इन्क्रीमेंट इंडेक्स, चरण 2 पर वापस लौटें।
इटरेटर
इटरेटर्स को एक ऑब्जेक्ट के रूप में परिभाषित किया जाता है जो एक इटरनल स्टेट वेरिएबल के माध्यम से इंटरेक्शन की गणना करता है। चर, इस मामले में, शून्य पर सेट नहीं है जब पुनरावृत्ति अंतिम आइटम को पार करती है, इसके बजाय, StopIteration() पुनरावृत्ति के अंत को इंगित करने के लिए उठाया जाता है। इसका यह भी अर्थ है कि पुनरावृत्त वस्तु को केवल एक बार पुनरावृत्त किया जाएगा, जैसे नीचे दिए गए उदाहरण में -
my_list = ['itemOne', 'TutorialsPoints'] iterators_of_some_list = iter(my_list) for i in iterators_of_some_list: print(i) for j in iterators_of_some_list: # doesn't work print(j) #However for k in my_list: print(k) for l in my_list: # it worked print(l)
आउटपुट
itemOne TutorialsPoints itemOne TutorialsPoints itemOne TutorialsPoints
उपरोक्त कोड सही है क्योंकि पुनरावर्तक पर iter() विधि स्वयं लौटाती है (वर्तमान स्थिति को याद रखना है)। तो ऊपर हमारे पास इसे समाप्त करने के लिए "के लिए" के समान एक लूप प्रकार का कार्यान्वयन है।