تعلم لغة البايثون – الدرس الثالث عشر المولدات في البايثون Python Generators

من السهل جدًا تنفيذ المولدات ، ولكن من الصعب قليلاً فهمها.

تُستخدم المولدات لإنشاء التكرارات ، ولكن بنهج مختلف. المولدات هي وظائف بسيطة تعيد مجموعة متكررة من العناصر ، واحدة تلو الأخرى ، بطريقة خاصة.

عندما يبدأ تكرار عبر مجموعة من العناصر باستخدام العبارة for ، يتم تشغيل المولد. بمجرد وصول رمز وظيفة المولد إلى عبارة “yield” ، يعيد المولد تنفيذه مرة أخرى إلى حلقة for ، ويعيد قيمة جديدة من المجموعة. يمكن أن تولد وظيفة المولد العدد الذي تريده من القيم (ربما لانهائية) ، مما يؤدي إلى إنتاج كل منها بدوره.

فيما يلي مثال بسيط على دالة مولد تقوم بإرجاع 7 أعداد صحيحة عشوائية:

import random

def lottery():
# يُرجع 6 أرقام بين 1 و 40
    for i in range(6):
        yield random.randint(1, 40)

# يعرض الرقم السابع بين 1 و 15
    yield random.randint(1,15)

for random_number in lottery():
       print("And the next number is... %d!" %(random_number))

سنحصل على النتيجة التالية عند التشغيل

And the next number is... 34!
And the next number is... 3!
And the next number is... 39!
And the next number is... 40!
And the next number is... 27!
And the next number is... 35!

تحدد هذه الوظيفة كيفية إنشاء الأرقام العشوائية بمفردها ، وتنفذ عبارات العائد واحدة تلو الأخرى ، وتتوقف مؤقتًا بين ذلك لإعطاء التنفيذ مرة أخرى إلى الرئيسي للحلقة

تمرين

اكتب دالة مولد ترجع سلسلة فيبوناتشي. يتم حسابها باستخدام الصيغة التالية: أول رقمين من السلسلة يساوي دائمًا 1 ، وكل رقم متتالي يتم إرجاعه هو مجموع آخر رقمين. تلميح: هل يمكنك استخدام متغيرين فقط في وظيفة المولد؟ تذكر أن المهام يمكن أن تتم في وقت واحد. الرمز

a = 1
b = 2
a, b = b, a
print(a,b)

سنحصل على النتيجة التالية عند التشغيل

2 1





Leave a Reply