सिंटैक्स से यील्ड कॉल करने वाले और कॉल करने वाले के बीच सीधा संबंध स्थापित करता है उप-जनरेटर, डेटा को उनके बीच निर्बाध रूप से प्रवाहित करने की अनुमति देता है। पारंपरिक फॉर लूप्स के विपरीत, जो केवल मान प्राप्त कर सकता है, यील्ड फ्रॉम एक द्विदिशात्मक चैनल प्रदान करता है। यह क्लाइंट सॉकेट के बीच एक अस्थायी कनेक्शन स्थापित करने के समान है, जो डेटा प्राप्त करने और भेजने दोनों को सक्षम बनाता है।
def reader():
"Simulates reading data from a source"
for i in range(4):
yield f"यील्ड फ्रॉम का उपयोग करके, हम लूप को मैन्युअल रूप से संभाले बिना रीडर जनरेटर पर पुनरावृति कर सकते हैं।
उदाहरण: एक Coroutine को डेटा भेजना
def writer():
"Simulates writing data to a destination"
while True:
w = (yield)
print(f">>> {w}")
writer_wrapper = writer_wrapper(writer())
for i in range(4):
wrap.send(i) # Output: >>> 0, >>> 1, >>> 2, >>> 3
इस उदाहरण में, सिंटैक्स से प्राप्त आउटपुट रैपर फ़ंक्शन को डेटा भेजने की अनुमति देता है लेखक () कोरआउटिन, एक सीधा डेटा एक्सचेंज स्थापित कर रहा है। यदि उप-जनरेटर को किसी अपवाद का सामना करना पड़ता है, तो इसे या तो कॉल करने वाले द्वारा फिर से उठाया जा सकता है या उप-जनरेटर के भीतर नियंत्रित किया जा सकता है। (अपवाद):
उत्तीर्ण
डीईएफ़ लेखक():
जबकि सत्य:
कोशिश करना:
डब्ल्यू = (उपज)
स्पैम अपवाद को छोड़कर:
प्रिंट करें ("***")
अन्य:
प्रिंट(f">>> {w}")
लेखक_रैपर = लेखक_रैपर(लेखक())
# रैपर के भीतर एक अपवाद उठाना
रैप.थ्रो(स्पैमएक्सेप्शन)
# अपेक्षित आउटपुट: ***
यील्ड फ्रॉम यह सुनिश्चित करता है कि रैपर फ़ंक्शन में मैन्युअल अपवाद हैंडलिंग की आवश्यकता के बिना, अपवादों को सुचारू रूप से प्रचारित किया जाता है।
निष्कर्ष
यील्ड फ्रॉम है एक शक्तिशाली वाक्यविन्यास जो अपवादों को निर्बाध रूप से संभालते हुए, कॉलर और उप-जनरेटर के बीच द्विदिश डेटा विनिमय के कार्यान्वयन को सरल बनाता है। यह इन घटकों के बीच संचार करने का एक पारदर्शी और कुशल तरीका प्रदान करता है, जो इसे पायथन 3.3 और बाद में जटिल डेटा प्रोसेसिंग परिदृश्यों से निपटने के लिए एक मूल्यवान उपकरण बनाता है।
अस्वीकरण: उपलब्ध कराए गए सभी संसाधन आंशिक रूप से इंटरनेट से हैं। यदि आपके कॉपीराइट या अन्य अधिकारों और हितों का कोई उल्लंघन होता है, तो कृपया विस्तृत कारण बताएं और कॉपीराइट या अधिकारों और हितों का प्रमाण प्रदान करें और फिर इसे ईमेल पर भेजें: [email protected] हम इसे आपके लिए यथाशीघ्र संभालेंगे।
Copyright© 2022 湘ICP备2022001581号-3