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

पायथन में yield का उपयोग return के बजाय कब करें?


संक्षेप में, जब भी आपके प्रोग्राम में कंट्रोल return स्टेटमेंट तक पहुंचता है, प्रोग्राम का निष्पादन समाप्त हो जाता है और शेष स्टेटमेंट निष्पादित नहीं होते।

हालांकि, yield के मामले में, जब भी कंट्रोल आपके प्रोग्राम में yield स्टेटमेंट तक पहुंचता है, आपके प्रोग्राम का निष्पादन रुक जाता है और बाद में हम फ़ंक्शन में अन्य स्टेटमेंट जारी रख सकते हैं।

आइए दोनों स्टेटमेंट को विस्तार से समझते हैं।

Yield

किसी फ़ंक्शन में yield स्टेटमेंट का उपयोग उसे एक जेनरेटर फ़ंक्शन बनाता है जिसे लूप में उपयोग किया जा सकता है। जब फ़ंक्शन चल रहा होता है और yield स्टेटमेंट निष्पादित होता है, तो yield के बाद का मान उस लूप को वापस पास किया जाता है जिसने इसे कॉल किया था। अगली बार जब लूप पुनरावृति करता है, तो फ़ंक्शन yield स्टेटमेंट के तुरंत बाद से शुरू होता है।

def func():\n    yield 1\n    yield 2\n    yield 3\n\nfor num in func():\n    print(num * num)

आउटपुट

1\n4\n9

उपरोक्त प्रोग्राम में, फ़ंक्शन को आमंत्रित करने वाला लूप तब पूरा होगा जब func फ़ंक्शन पूरा हो जाए - या तो फ़ंक्शन के अंत (func()) तक पहुंचने पर या return स्टेटमेंट पर।

हालांकि, वही जेनरेटर फ़ंक्शन उपयोग करने वाला कोई भी नया लूप फ़ंक्शन को शुरुआत से फिर से निष्पादित करेगा।

Return

एक return स्टेटमेंट:

  • किसी फ़ंक्शन के निष्पादन को रोकने और वैकल्पिक रूप से कॉलर को एक मान वापस करने के लिए उपयोग किया जाता है। एक फ़ंक्शन जिसमें return है (लेकिन yield नहीं) लूप में उपयोग नहीं किया जा सकता (उपरोक्त yield के विपरीत)।

  • यदि पहले निष्पादित फ़ंक्शन को फिर से कॉल किया जाता है, तो फ़ंक्शन शुरुआत से निष्पादन शुरू करता है (उपरोक्त yield के विपरीत)।

return या yield कब उपयोग करें?

जब हम किसी अनुक्रम पर पुनरावृति करना चाहते हैं, लेकिन संसाधन बाधाओं के कारण या केवल पूरे अनुक्रम को मेमोरी में संग्रहीत नहीं करना चाहते हैं, तो yield का उपयोग करने की सिफारिश की जाती है। अन्य मामलों में हम return स्टेटमेंट का उपयोग करने के बारे में सोच सकते हैं।

आइए एक और प्रोग्राम देखें जो पूर्णांक के वर्ग उत्पन्न करने के लिए yield स्टेटमेंट का उपयोग करता है।

def Square():\n    i = 1\n    # वर्ग उत्पन्न करने के लिए अनंत लूप\n    while True:\n        yield i * i\n        i += 1  # अगला निष्पादन इस बिंदु से फिर से शुरू होता है\n\nfor num in Square():\n    if num > 100:\n        break\n    print(num)

आउटपुट

1\n4\n9\n16\n25\n36\n49\n64\n81\n100

yield स्टेटमेंट का आमतौर पर try...finally ब्लॉक के try क्लॉज में उपयोग नहीं किया जाता है क्योंकि इसकी कोई गारंटी नहीं है कि जेनरेटर कभी फिर से शुरू होगा, इसलिए कोई गारंटी नहीं है कि finally ब्लॉक कभी निष्पादित होगा।

  1. एक्सेल में VLOOKUP के बजाय INDEX-MATCH का उपयोग कब करें एक्सेल में VLOOKUP के बजाय INDEX-MATCH का उपयोग कब करें

    जो लोग एक्सेल में पारंगत हैं, वे VLOOKUP फ़ंक्शन से भली-भांति परिचित होंगे। VLOOKUP फ़ंक्शन का उपयोग किसी मान को उसी पंक्ति में मिलान करने वाले टेक्स्ट के आधार पर किसी अन्य सेल में ढूंढने के लिए किया जाता है। यदि आप अभी भी VLOOKUP फ़ंक्शन में नए हैं, तो आप एक्सेल में VLOOKUP का उपयोग कैसे करें, इस प

  1. - C# में yield return का क्या उपयोग है?

    yield कीवर्ड एक कलेक्शन पर कस्टम स्टेटफुल इटरेशन करने में मदद करता है। अर्थात जब हम yield कीवर्ड का उपयोग करते हैं तो कंट्रोल कॉलर फंक्शन से सोर्स और इसके विपरीत आगे-पीछे मूव करता है। उदाहरण using System; using System.Collections.Generic; namespace DemoApplication { class Program {

  1. Python में फंक्शन से फिगर कैसे रिटर्न करें (Matplotlib का उपयोग करके)? Python में फंक्शन से फिगर कैसे रिटर्न करें (Matplotlib का उपयोग करके)?

    Python में फंक्शन से फिगर रिटर्न करने के लिए (Matplotlib का उपयोग करके), हम निम्न चरण अपना सकते हैं: फिगर साइज सेट करें और सबप्लॉट्स के बीच और आसपास पैडिंग एडजस्ट करें। Numpy का उपयोग करके x और y डेटा पॉइंट्स बनाएं। plot(x, y) फंक्शन बनाएं जो figure() मेथड का उपयोग करके नया फिगर बनाए या मौजूदा फिग