हाँ, हम पायथन में yield कीवर्ड का उपयोग करके जेनरेटर बना सकते हैं जो इटरेटर की तरह व्यवहार करता है। जेनरेटर इटरेटर बनाने का एक सरल और आसान तरीका है।
जेनरेटर क्या है?
जेनरेटर एक ऐसा फंक्शन है जिसे हम एक बार में एक मान पर पुनरावृत्त (iterate) कर सकते हैं। दैनिक प्रोग्रामिंग में हम सूची (list), स्ट्रिंग, डिक्शनरी जैसे इटरेबल ऑब्जेक्ट्स का उपयोग करते हैं। एक इटरेटर वह ऑब्जेक्ट है जिसे लूप के माध्यम से पुनरावृत्त किया जा सकता है।
उदाहरण: साधारण जेनरेटर
def generator():
print("प्रोग्राम सफलतापूर्वक चल रहा है")
yield 'x'
yield 'y'
yield 'z'
# जेनरेटर ऑब्जेक्ट बनाना
gen = generator()
print(gen) # आउटपुट: <generator object generator at 0x...>
# for लूप से मान प्राप्त करना
for i in generator():
print(i)
आउटपुट
प्रोग्राम सफलतापूर्वक चल रहा है x y z
इटरेटर प्रोटोकॉल: __iter__ और __next__
इटरेटर ऑब्जेक्ट दो मेथड सपोर्ट करते हैं:
- __iter__ - इटरेटर ऑब्जेक्ट को स्वयं लौटाता है;
forऔरinस्टेटमेंट में उपयोग होता है। - __next__ - इटरेटर से अगला मान लौटाता है; यदि कोई आइटम नहीं बचा तो
StopIterationएक्सेप्शन उठाता है।
उदाहरण: कस्टम इटरेटर क्लास
class TemperatureRange:
def __init__(self, low, high):
self.current = low
self.high = high
def __iter__(self):
return self
def __next__(self):
if self.current > self.high:
raise StopIteration
else:
self.current += 1
return self.current - 1
# उपयोग
c = TemperatureRange(3, 20)
for i in c:
print(i, end=' ')
आउटपुट
3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
मुख्य बिंदु: जेनरेटर yield का उपयोग करके स्वचालित रूप से __iter__ और __next__ लागू करते हैं, जिससे कोड सरल और पठनीय बनता है।