في بايثون، المولد هو دالة تقوم بإرجاع مكرر ينتج سلسلة من القيم عند تكرارها، وتكون المولدات مفيدة عندما نريد إنتاج تسلسل كبير من القيم، لكننا لا نريد تخزينها جميعًا في الذاكرة مرة واحدة.
كيفية إنشاء مولد بايثون
في لغة البرمجة بايثون، على غرار تحديد وظيفة عادية، يمكننا تحديد وظيفة المولد باستخدام الكلمة الأساسية (def)، ولكن بدلاً من عبارة الإرجاع (return)، نستخدم عبارة (yield)، انظر ما يلي:
def generator_name(arg):
# statements
yield something
هنا، يتم استخدام الكلمة الأساسية (yield) لإنتاج قيمة من المولد، كما أنه عندما يتم استدعاء وظيفة المولد، فإنها لا تقوم بتنفيذ الوظيفة على الفور، بدلاً من ذلك، تقوم بإرجاع كائن منشئ يمكن تكراره للحصول على القيم، فيما يلي مثال على وظيفة المولد التي تنتج سلسلة من الأرقام:
def my_generator(n):
# initialize counter
value = 0
# loop until counter is less than n
while value < n:
# produce the current value of the counter
yield value
# increment the counter
value += 1
# iterate over the generator object produced by my_generator
for value in my_generator(3):
# print each value produced by generator
print(value)
وتكون المخرجات كالاتي:
0
1
2
ما هي استخدامات مولدات بايثون
هناك العديد من الأسباب التي تجعل المولدات تطبيقًا فعالاً:
- سهلة التنفيذ: يمكن تنفيذ المولدات بطريقة واضحة وموجزة مقارنة بنظيرتها من فئة التكرار.
- كفاءة الذاكرة: يعد تنفيذ المولد للتسلسلات أمرًا ملائمًا للذاكرة ويفضل لأنه ينتج عنصرًا واحدًا فقط في كل مرة.
- تمثل التدفق اللانهائي: المولدات هي وسائط ممتازة لتمثيل دفق غير محدود من البيانات، ولا يمكن تخزين التدفقات اللانهائية في الذاكرة، وبما أن المولدات تنتج عنصرًا واحدًا فقط في كل مرة، فإنها يمكن أن تمثل دفقًا لا نهائيًا من البيانات.