"यदि कोई कर्मचारी अपना काम अच्छी तरह से करना चाहता है, तो उसे पहले अपने औजारों को तेज करना होगा।" - कन्फ्यूशियस, "द एनालेक्ट्स ऑफ कन्फ्यूशियस। लू लिंगगोंग"
मुखपृष्ठ > प्रोग्रामिंग > पायथन 3.3 जेनरेटर में रिटर्न और यील्ड एक साथ कैसे काम करते हैं?

पायथन 3.3 जेनरेटर में रिटर्न और यील्ड एक साथ कैसे काम करते हैं?

2024-11-01 को प्रकाशित
ब्राउज़ करें:139

How Do Return and Yield Work Together in Python 3.3 Generators?

पायथन जेनरेटर में रिटर्न और यील्ड का एक साथ उपयोग करना

पायथन 2 में, जनरेटर फ़ंक्शन के अंदर एक रिटर्न स्टेटमेंट जिसमें यील्ड का भी उपयोग किया जाता है, का परिणाम होगा एक गलती। हालाँकि, Python 3.3 में, एक सूक्ष्म परिवर्तन हुआ। ): वापसी 3 उपज 2 एक्स = एफ() print(x.__next__())

Explanation

इस कोड में, फ़ंक्शन f में रिटर्न स्टेटमेंट और यील्ड स्टेटमेंट दोनों शामिल हैं। जब फ़ंक्शन को कॉल किया जाता है, तो रिटर्न स्टेटमेंट पहले निष्पादित किया जाता है, और मान 3 लौटाया जाता है। परिणामस्वरूप, यील्ड स्टेटमेंट निष्पादित नहीं होता है। जनरेटर का पुनरावर्तक समाप्त हो गया है, और रिटर्न स्टेटमेंट द्वारा लौटाया गया मान अपवाद के मान विशेषता के रूप में उपलब्ध है।

def f():
  return 3
  yield 2
  
x = f()
print(x.__next__())

पीईपी 380 के अनुसार, यह व्यवहार पायथन 3.3 में पेश की गई एक नई सुविधा है। यह लिखने के बराबर है:

def f(): उपज 3 stopIteration बढ़ाएं

यील्ड से उदाहरण

निम्नलिखित उदाहरण दर्शाता है कि यह व्यवहार सिंटैक्स से यील्ड का उपयोग करके प्रत्यायोजित जेनरेटर को कैसे प्रभावित करता है:

def एफ(): वापसी 1 उपज 2 डीईएफ़ जी(): x = f से उपज() प्रिंट(एक्स) # g अभी भी एक जनरेटर है इसलिए हमें इसे चलाने के लिए पुनरावृत्त करने की आवश्यकता है: _ में g() के लिए: pass

इस मामले में, स्टेटमेंट से प्राप्त आउटपुट जेनरेटर एफ को सौंपता है। चूँकि f एक मान लौटाता है लेकिन इसमें कोई अधिक उपज विवरण नहीं है, मान 1 मुद्रित होता है। हालाँकि, f में यील्ड 2 स्टेटमेंट निष्पादित नहीं किया गया है।
            
विज्ञप्ति वक्तव्य इस लेख को पुन: प्रस्तुत किया गया है: 1729747611 यदि कोई उल्लंघन है, तो कृपया इसे हटाने के लिए [email protected] पर संपर्क करें।
नवीनतम ट्यूटोरियल अधिक>

चीनी भाषा का अध्ययन करें

अस्वीकरण: उपलब्ध कराए गए सभी संसाधन आंशिक रूप से इंटरनेट से हैं। यदि आपके कॉपीराइट या अन्य अधिकारों और हितों का कोई उल्लंघन होता है, तो कृपया विस्तृत कारण बताएं और कॉपीराइट या अधिकारों और हितों का प्रमाण प्रदान करें और फिर इसे ईमेल पर भेजें: [email protected] हम इसे आपके लिए यथाशीघ्र संभालेंगे।

Copyright© 2022 湘ICP备2022001581号-3