पायथन जेनरेटर में रिटर्न और यील्ड का एक साथ उपयोग करना
पायथन 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 स्टेटमेंट निष्पादित नहीं किया गया है।अस्वीकरण: उपलब्ध कराए गए सभी संसाधन आंशिक रूप से इंटरनेट से हैं। यदि आपके कॉपीराइट या अन्य अधिकारों और हितों का कोई उल्लंघन होता है, तो कृपया विस्तृत कारण बताएं और कॉपीराइट या अधिकारों और हितों का प्रमाण प्रदान करें और फिर इसे ईमेल पर भेजें: [email protected] हम इसे आपके लिए यथाशीघ्र संभालेंगे।
Copyright© 2022 湘ICP备2022001581号-3