ما هي المولدات في بايثون Python Generators

اقرأ في هذا المقال


في بايثون، المولد هو دالة تقوم بإرجاع مكرر ينتج سلسلة من القيم عند تكرارها، وتكون المولدات مفيدة عندما نريد إنتاج تسلسل كبير من القيم، لكننا لا نريد تخزينها جميعًا في الذاكرة مرة واحدة.

كيفية إنشاء مولد بايثون

في لغة البرمجة بايثون، على غرار تحديد وظيفة عادية، يمكننا تحديد وظيفة المولد باستخدام الكلمة الأساسية (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

ما هي استخدامات مولدات بايثون

هناك العديد من الأسباب التي تجعل المولدات تطبيقًا فعالاً:

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

المصدر: JavaScript, Stephen Blumenthal, 2017 edition.PROFESSIONAL JAVASCRIPT: FOR WEB DEVELOPERS, Nicholas C. Zakas,2012 edition.JavaScript: The Definitive Guide, David Flanagan, 2011 edition.JavaScript: The Good Parts, Douglas Crockford, 2008 edition.


شارك المقالة: