Computer >> कंप्यूटर ट्यूटोरियल >  >> प्रोग्रामिंग >> Python

पायथन यील्ड कीवर्ड: एक गाइड

पायथन यील्ड कीवर्ड का उपयोग कैसे करें

जेनरेटर्स पायथन में सबसे सहज अवधारणा नहीं हैं। मामले को बदतर बनाने के लिए, वे "यील्ड" नामक एक विशेष कीवर्ड का उपयोग करते हैं, भले ही जेनरेटर्स स्वयं फ़ंक्शन्स हैं। यील्ड कीवर्ड क्या है? यह रिटर्न स्टेटमेंट से कैसे तुलना करता है?

वे अच्छे सवाल हैं। इस गाइड में, हम बात करते हैं कि यील्ड स्टेटमेंट क्या है और आप इसे अपने कोड में कैसे उपयोग कर सकते हैं। हम यील्ड कीवर्ड के एक्शन में एक उदाहरण देखते हैं। शुरू करते हैं!

हम पायथन इटरेरेटर्स और जेनरेटर्स पर हमारे आर्टिकल्स पढ़ने की सलाह देते हैं इससे पहले कि आप जारी रखें। यह आपको कुछ उपयोगी संदर्भ देता है जिसका उपयोग आप यील्ड कीवर्ड की अपनी समझ को आगे बढ़ाने के लिए कर सकते हैं।

बुनियादी बातों पर वापस: इटरेरेटर्स और जेनरेटर्स

सूचियों को इटरेबल ऑब्जेक्ट्स के रूप में वर्णित किया जाता है। ऐसा इसलिए है क्योंकि आप "for" लूप का उपयोग करके उनकी सामग्री देख सकते हैं। हर बार लूप निष्पादित होता है, पायथन द्वारा सूची में एक आइटम एक्सेस किया जाता है। डिक्शनरी, टपल्स, और स्ट्रिंग्स भी इटरेबल ऑब्जेक्ट्स हैं।

एक फ़ंक्शन जो एक इटरेबल ऑब्जेक्ट से एक आइटम एक्सेस करता है उसे इटरेरेटर कहा जाता है। आइए एक सूची बनाते हैं और for लूप का उपयोग करके उस पर इटरेट करते हैं:

peppers = ["Scotch Bonnet", "Piri Piri", "Cayenne"]
for p in peppers:
    print(p)
for p in peppers:
    print(p)

यह कोड "peppers" सूची में सभी मिर्च को कंसोल पर प्रिंट करता है:

Scotch Bonnet
Piri Piri
Cayenne
Scotch Bonnet
Piri Piri
Cayenne

हम अपने इटरेरेटर का उपयोग जितनी बार चाहें कर सकते हैं। पिछले उदाहरण में, हमने "peppers" ऑब्जेक्ट पर दो बार इटरेट किया।

पायथन जेनरेटर्स एक ऑब्जेक्ट को दोहराने के लिए उपयोग किए जाने वाले इटरेरेटर की तरह हैं। एक बड़ा अंतर है: आप केवल एक बार जेनरेटर पर इटरेट कर सकते हैं। जबकि हम "peppers" पर जितनी बार चाहें इटरेट कर सकते हैं, एक जेनरेटर केवल एक बार एक्सेस किया जाता है।

आइए अपनी मिर्च की सूची के लिए एक जेनरेटर परिभाषित करते हैं:

def print_peppers(peppers):
    for p in peppers:
        yield p

peppers = ["Scotch Bonnet", "Piri Piri", "Cayenne"]
pepper_generator = print_peppers(peppers)
for p in pepper_generator:
    print(p)

हम print_peppers() नामक एक फ़ंक्शन परिभाषित करते हैं। यह हमारा जेनरेटर फ़ंक्शन है। यह एक आर्गुमेंट स्वीकार करता है: मिर्च की एक सूची जिसे हम कंसोल पर प्रिंट करना चाहते हैं।

हमारे मेन प्रोग्राम में, हम print_peppers() फ़ंक्शन को कॉल करते हैं और इसे pepper_generator वेरिएबल को असाइन करते हैं। अगला, हम "for" लूप का उपयोग करके जेनरेटर पर इटरेट करते हैं। हमारा for लूप जेनरेटर ऑब्जेक्ट को कॉल करता है और उस पर इटरेट करता है।

आइए अपना कोड चलाते हैं:

Scotch Bonnet
Piri Piri
Cayenne

आउटपुट हमारे पहले उदाहरण के समान है। अंतर यह है कि हम अपनी सूची पर केवल एक बार इटरेट कर सकते हैं। आइए अपने जेनरेटर पर फिर से इटरेट करने का प्रयास करते हैं:

...
for p in pepper_generator:
    print(p)
for p in pepper_generator:
    print(p)

हमारा कोड लौटाता है:

Scotch Bonnet
Piri Piri
Cayenne

हमने अपने जेनरेटर पर एक बार इटरेट किया है। हम इसे फिर से नहीं कर सकते। इसलिए हमारा दूसरा for लूप कोई मान नहीं लौटाता।

पायथन यील्ड कीवर्ड

पिछले उदाहरण में "यील्ड" शब्द पर ध्यान दें। यहां एक रिमाइंडर है:

def print_peppers(peppers):
    for p in peppers:
        yield p

"यील्ड" कीवर्ड हमारे फ़ंक्शन के अंदर दिखाई देता है। यह एक जेनरेटर फ़ंक्शन में एक मान लौटाता है। यह "रिटर्न" कीवर्ड के समान है।

यील्ड का उपयोग तब करें जब आप एक जेनरेटर बनाना चाहते हैं जिस पर आप इटरेट कर सकें। हमारे पिछले उदाहरण में, हम अपनी मिर्च की सूची के लिए एक जेनरेटर बनाने के लिए यील्ड का उपयोग करते हैं।

यील्ड वाला कोई भी फ़ंक्शन एक जेनरेटर लौटाएगा। हम type() मेथड का उपयोग करके pepper_generator वेरिएबल के प्रकार की जांच करके इसे देखते हैं:

<class 'generator'>

यह हमें बताता है कि pepper_generator, जिसे print_peppers फ़ंक्शन असाइन किया गया है, एक जेनरेटर है।

निष्कर्ष

यील्ड कीवर्ड एक जेनरेटर के अंदर एक मान लौटाता है। एक जेनरेटर एक विशेष प्रकार का इटरेरेटर है जिसके मान केवल एक बार इटरेट किए जा सकते हैं। यील्ड कीवर्ड एक रिटर्न स्टेटमेंट के समान है सिवाय इसके कि रिटर्न स्टेटमेंट्स का उपयोग जेनरेटर्स में नहीं किया जा सकता।

अब आप एक पायथनिस्टा की तरह यील्ड कीवर्ड का उपयोग करने के लिए तैयार हैं!

  1. - पायथन में ग्लोबल कीवर्ड

    पायथन प्रोग्राम में अलग-अलग वेरिएबल्स का अलग-अलग स्कोप होता है। यह इस बात पर निर्भर करता है कि इसे कहां घोषित किया गया है, वेरिएबल फंक्शन के अंदर एक्सेसिबल हो भी सकता है और नहीं भी। कभी-कभी हमें किसी फंक्शन के अंदर मौजूद वेरिएबल को उसके वर्तमान स्कोप के बाहर से संशोधित करने की आवश्यकता होती है। ऐसे

  1. - Python में कीवर्ड्स

    अन्य भाषाओं की तरह, Python में भी कुछ रिज़र्व्ड वर्ड्स होते हैं। इन शब्दों का विशेष अर्थ होता है। कभी-कभी यह एक कमांड हो सकता है, या एक पैरामीटर आदि। हम कीवर्ड्स को वेरिएबल नाम के रूप में उपयोग नहीं कर सकते। Python के कीवर्ड्स हैं: TrueFalseclassdefreturn ifelifelsetryexcept raisefinallyforinis no

  1. - Python में "yield" कीवर्ड क्या करता है?

    yield कीवर्ड जेनरेटर में उपयोग किया जाता है। इसके व्यवहार को समझने के लिए आइए पहले देखें कि इटरेबल्स क्या हैं। Python ऑब्जेक्ट्स लिस्ट, फाइल, स्ट्रिंग आदि को इटरेबल्स कहा जाता है। कोई भी ऑब्जेक्ट जिसे for..in सिंटैक्स का उपयोग करके ट्रैवर्स किया जा सकता है, इटरेबल है। इटरेटर ऑब्जेक्ट भी एक इटरेबल है