0Pricing
Python For Kids · درس

Generators

افهموا Generators واستخدامها لإنشاء Iterators

Generators درس مجاني في Python For Kids على CoddyKit. هذا هو الدرس 2 من أصل 5. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في Python For Kids، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة Python For Kids 5 دروس في المجموع.

مقدمة إلى المولّدات

المولّدات نوع خاص من أدوات التكرار في Python، يتيح لك التكرار على البيانات بشكل كسول. فبدلًا من إرجاع جميع البيانات دفعة واحدة، تُرجع عنصرًا واحدًا في كل مرة، مما يجعلها فعّالة من حيث استخدام الذاكرة.

في هذا الدرس، ستتعلّم كيفية إنشاء المولّدات واستخدامها في Python.

Generators — رسم توضيحي 1

ما هو المولّد؟

المولّد هو دالة تستخدم الكلمة المفتاحية yield لإرجاع القيم واحدة تلو الأخرى. وتستأنف كل عملية استدعاء للطريقة next() الخاصة بالمولّد التنفيذ من الموضع الذي أرجعت عنده الدالة آخر قيمة.

# Basic generator example
def my_generator():
    yield 1
    yield 2
    yield 3

# Using the generator
gen = my_generator()
print(next(gen))  # Outputs: 1
print(next(gen))  # Outputs: 2
print(next(gen))  # Outputs: 3

كيف تعمل المولّدات

تحفظ المولّدات حالة الدالة، ولذلك يمكنها استئناف التنفيذ من الموضع الذي توقفت عنده بالضبط. وهذا يجعلها فعّالة من حيث استخدام الذاكرة ومناسبة لمجموعات البيانات الكبيرة.

# Example: Generating a range of numbers
def range_generator(start, end):
    while start < end:
        yield start
        start += 1

for number in range_generator(1, 5):
    print(number)  # Outputs: 1, 2, 3, 4

تعبيرات المولّدات

تشبه تعبيرات المولّدات استيعاب القوائم، لكنها تستخدم الأقواس الدائرية بدلًا من الأقواس المربعة. وهي تنشئ مولّدات بدلًا من القوائم.

# Generator expression
gen_exp = (x * x for x in range(5))

for value in gen_exp:
    print(value)  # Outputs: 0, 1, 4, 9, 16

المولّدات مقابل القوائم

المولّدات أكثر كفاءة من حيث استخدام الذاكرة من القوائم، لأنها لا تخزّن جميع البيانات في الذاكرة. بل تُنشئ البيانات عند الحاجة.

# Comparing lists and generators
# List comprehension
list_comp = [x * x for x in range(1000000)]

# Generator expression
gen_exp = (x * x for x in range(1000000))

# List comprehension uses more memory
print(type(list_comp))  # Outputs: <class 'list'>
print(type(gen_exp))    # Outputs: <class 'generator'>

حالات استخدام المولّدات

تُعد المولّدات مثالية من أجل:

  • معالجة مجموعات البيانات الكبيرة التي لا تتسع لها الذاكرة.
  • إنشاء متتاليات لا نهائية.
  • التقييم الكسول للبيانات.

المولّدات اللانهائية

يمكن للمولّدات إنتاج متتاليات لا نهائية، مثل متتالية أعداد لا تنتهي. احرص على إيقاف الحلقة لمنع استمرار التنفيذ إلى ما لا نهاية.

# Infinite generator example
def infinite_sequence():
    num = 0
    while True:
        yield num
        num += 1

# Using the infinite generator
for i in infinite_sequence():
    if i > 5:
        break
    print(i)  # Outputs: 0, 1, 2, 3, 4, 5

دوال المولّدات ذات عبارات yield متعددة

يمكن أن تحتوي دوال المولّدات على عدة عبارات yield، مما يتيح لك إنشاء متتاليات معقدة:

# Multiple yields in a generator
def multi_yield():
    yield "First"
    yield "Second"
    yield "Third"

for value in multi_yield():
    print(value)  # Outputs: First, Second, Third

الأخطاء الشائعة عند استخدام المولّدات

إليك بعض الأخطاء التي ينبغي تجنبها:

  • استخدام return بدلًا من yield في دالة مولّد.
  • عدم استهلاك المولّد باستخدام حلقة أو next().
  • استخدام المولّدات مع مجموعات بيانات صغيرة تكون القوائم أنسب لها.

ماذا تعلّمنا؟

في هذا الدرس، تعلّمت ما يلي:

  • ما هي المولّدات وكيف تعمل في Python.
  • كيفية استخدام yield لإنشاء دوال مولّدة.
  • الاختلافات بين المولّدات والقوائم.
  • حالات استخدام المولّدات، مثل المتتاليات اللانهائية ومجموعات البيانات الكبيرة.

أحسنت! لننتقل إلى الموضوع التالي.

Generators — رسم توضيحي 11

الأسئلة الشائعة

هل درس «Generators» مجاني؟

نعم — نص درس «Generators» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة Python For Kids، انتقل إلى CoddyKit PRO. تتضمن دورة Python For Kids 5 دروس في المجموع.

ماذا ستتعلم في «Generators»؟

افهموا Generators واستخدامها لإنشاء Iterators تتمرن على Python For Kids مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.

هل أحتاج إلى خبرة سابقة لأبدأ Python For Kids؟

لا تُشترط خبرة سابقة. Python For Kids على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 2 من أصل 5.

كم من الوقت يستغرق درس «Generators»؟

معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.

هل يمكنني كتابة وتشغيل أكواد في درس Python For Kids هذا؟

نعم. كل درس في Python For Kids يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.

جميع الدروس في هذه الدورة

  1. Decorators
  2. Generators
  3. Context Managers ‏(عبارات with)
  4. Comprehensions ‏(القوائم والمجموعات والقواميس)
  5. Iterators وIterables
← العودة إلى Python For Kids