ينشئ العائد من بناء الجملة اتصالاً مباشرًا بين المتصل والمتصل مولد فرعي، مما يسمح بتدفق البيانات بسلاسة فيما بينها. على عكس حلقات for التقليدية، والتي يمكن أن تنتج قيمًا فقط، فإن العائد من يوفر قناة ثنائية الاتجاه. وهذا مشابه لإنشاء اتصال مؤقت بين مآخذ توصيل العميل، مما يتيح تلقي البيانات وإرسالها.
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
في هذا المثال، يسمح الناتج من بناء الجملة لوظيفة التغليف بإرسال البيانات إلى الكاتب () coroutine، ينشئ تبادلًا مباشرًا للبيانات.
معالجة الاستثناءات
يعالج العائد أيضًا انتشار الأخطاء بشفافية. إذا واجه المولد الفرعي استثناءً، فيمكن إما إعادة طرحه بواسطة المتصل أو معالجته داخل المولد الفرعي.
مثال: معالجة الاستثناء باستخدام SpamException
class SpamException(Exception):
pass
def writer():
while True:
try:
w = (yield)
except SpamException:
print("***")
else:
print(f">>> {w}")
writer_wrapper = writer_wrapper(writer())
# Raising an exception within the wrapper
wrap.throw(SpamException)
# Expected Output: ***
يضمن العائد من نشر الاستثناءات بسلاسة، دون الحاجة إلى معالجة الاستثناء يدويًا في وظيفة المجمع.
الاستنتاج
العائد من هو بناء جملة قوي يعمل على تبسيط تنفيذ تبادل البيانات ثنائي الاتجاه بين المتصل والمولدات الفرعية، والتعامل مع الاستثناءات بسلاسة. فهو يوفر طريقة شفافة وفعالة للتواصل بين هذه المكونات، مما يجعله أداة قيمة للتعامل مع سيناريوهات معالجة البيانات المعقدة في Python 3.3 والإصدارات الأحدث.
تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.
Copyright© 2022 湘ICP备2022001581号-3