مفهوم الـ
الـ
عبارة عن كائن يحتوي على عدد محدد من القيم التي يتم تخزينها بالترتيب وراء بعضها البعض حيث أنك عندما تريد الوصول إلى القيم التي فيه فإنك تستطيع الوصول إلى قيمه الواحدة تلو الأخرى بنفس الترتيب الذي تم تخزينهم فيه.
فعلياً, كلما وصلت إلى قيمة فيه تصبح قادر على الوصول إلى القيمة التالية الموضوعة بعدها مباشرةً.
الـ
عبارة عن كائن يحتوي على عدد محدد من القيم التي يتم تخزينها بالترتيب وراء بعضها البعض حيث أنك عندما تريد الوصول إلى القيم التي فيه فإنك تستطيع الوصول إلى قيمه الواحدة تلو الأخرى بنفس الترتيب الذي تم تخزينهم فيه.فعلياً, كلما وصلت إلى قيمة فيه تصبح قادر على الوصول إلى القيمة التالية الموضوعة بعدها مباشرةً.
معلومة تقنية
الـ
في بايثون عبارة عن كائن يطبق بروتوكول يقال له Iterator Protocol.
هذا البروتوكول يتم تطبيقه من خلال إستدعاء الدالتين المجهزتين لذلك: و .
و بالتالي تستطيع إنشاء بنفسك إذا فعلت Override لهاتين الدالتين بشكل صحيح في حال أردت ذلك.
الـ
في بايثون عبارة عن كائن يطبق بروتوكول يقال له Iterator Protocol.هذا البروتوكول يتم تطبيقه من خلال إستدعاء الدالتين المجهزتين لذلك: و .
و بالتالي تستطيع إنشاء بنفسك إذا فعلت Override لهاتين الدالتين بشكل صحيح في حال أردت ذلك.
الفرق بين الـ و الـ
عند إنشاء كائن
, , أو , فإنك بذلك تنشئ كائن نوعه حيث أنك تستطيع الوصول لقيمة أي عنصر فيهم بشكل مباشر من خلال ذكر رقم الـ Index أو الـ Key الخاص بالعنصر.كائن الـ
لا يمكن الوصول لقيم محددة فيه, لأنه كما سبق و قلنا يمكنك الوصول لقيمه بنفس الترتيب الذي تم تخزينهم فيه.
في كل مرة تريد فيها الحصول على القيمة التالية فيه سيكون عليك إستدعاء دالة إسمها .
هذه الدالة مصممة لإعطاءك القيمة التالية في الـ في كل مرة تستدعيها فيها.
في حال وصلت إلى نهاية الـ - أي إلى آخر قيمة فيه - و قمت باستدعاءها, سترجع لك الخطأ StopIteration.الفرق المهم بين الـ
و الـ هو أن هذا الأخير لا يمكن الوصول بشكل مباشر لقيمة محددة فيه.
عند إنشاء كائن
, , أو , فإنك بذلك تنشئ كائن نوعه حيث أنك تستطيع الوصول لقيمة أي عنصر فيهم بشكل مباشر من خلال ذكر رقم الـ Index أو الـ Key الخاص بالعنصر.كائن الـ
لا يمكن الوصول لقيم محددة فيه, لأنه كما سبق و قلنا يمكنك الوصول لقيمه بنفس الترتيب الذي تم تخزينهم فيه.في كل مرة تريد فيها الحصول على القيمة التالية فيه سيكون عليك إستدعاء دالة إسمها .
هذه الدالة مصممة لإعطاءك القيمة التالية في الـ في كل مرة تستدعيها فيها.
في حال وصلت إلى نهاية الـ - أي إلى آخر قيمة فيه - و قمت باستدعاءها, سترجع لك الخطأ StopIteration.
الفرق المهم بين الـ
و الـ هو أن هذا الأخير لا يمكن الوصول بشكل مباشر لقيمة محددة فيه.التعامل مع الـ
في البداية, للحصول على نسخة من كائن نوعه
ككائن نوعه نستخدم دالة جاهزة في بايثون إسمها , .
في المثال التالي قمنا بإنشاء
وضعنا فيه 3 قيم.
بعدها قمنا بإنشاء منه, و من ثم عرضنا القيم الموجودة فيه الواحدة تلو الأخرى.
في البداية, للحصول على نسخة من كائن نوعه
ككائن نوعه نستخدم دالة جاهزة في بايثون إسمها , .في المثال التالي قمنا بإنشاء
وضعنا فيه 3 قيم.بعدها قمنا بإنشاء منه, و من ثم عرضنا القيم الموجودة فيه الواحدة تلو الأخرى.
مثال
سنحصل على النتيجة التالية عند تشغيل الملف
.
سنحصل على النتيجة التالية عند تشغيل الملف
.المرور على قيم الـ بواسطة الحلقة
في المثال التالي قمنا بإنشاء
وضعنا فيه 3 قيم.
بعدها قمنا باستخدام الحلقة لعرض القيم الموجودة فيه الواحدة تلو الأخرى.
في المثال التالي قمنا بإنشاء
وضعنا فيه 3 قيم.بعدها قمنا باستخدام الحلقة لعرض القيم الموجودة فيه الواحدة تلو الأخرى.
المثال الأول
سنحصل على النتيجة التالية عند تشغيل الملف
.
سنحصل على النتيجة التالية عند تشغيل الملف
.معلومة تقنية
الذي عليك معرفته هنا هو أن مفسر لغة بايثون يقوم بتحويل الحلقة
إلى كائن و على هذا الأساس فإن الحلقة ترجع لك القيمة التالية في كل دورة.
إذاً الحلقة التي تستخدمها للمرور على قيم أي كالتالي.فعلياً مفسر لغة بايثون يقوم داخلياً بالتعامل مع الحلقة
كالتالي.
الذي عليك معرفته هنا هو أن مفسر لغة بايثون يقوم بتحويل الحلقة
إلى كائن و على هذا الأساس فإن الحلقة ترجع لك القيمة التالية في كل دورة.إذاً الحلقة التي تستخدمها للمرور على قيم أي كالتالي.
فعلياً مفسر لغة بايثون يقوم داخلياً بالتعامل مع الحلقة
كالتالي.ملاحظة
لست مضطر لفهم طريقة عمل الحلقة
بشكل دقيق جداُ في هذه المرحلة, لكن يفضل أن تعرف ذلك لتفهم كيف تعمل لغة بايثون و تزيد خبرتك في التعامل معها.
كما أنك ستفهم الكود الذي كتبناه الآن بكل سهولة في دروس لاحقة حين تتعلم كيف تعالج الأخطاء البرمجية باستخدام الكلمتين و .
في المثال التالي قمنا بالمرور على جميع أحرف النص و عرضهم واحداً تلو الآخر باستخدام الحلقة
.
لست مضطر لفهم طريقة عمل الحلقة
بشكل دقيق جداُ في هذه المرحلة, لكن يفضل أن تعرف ذلك لتفهم كيف تعمل لغة بايثون و تزيد خبرتك في التعامل معها.كما أنك ستفهم الكود الذي كتبناه الآن بكل سهولة في دروس لاحقة حين تتعلم كيف تعالج الأخطاء البرمجية باستخدام الكلمتين و .
في المثال التالي قمنا بالمرور على جميع أحرف النص و عرضهم واحداً تلو الآخر باستخدام الحلقة
.المثال الثاني
سنحصل على النتيجة التالية عند تشغيل الملف
.
سنحصل على النتيجة التالية عند تشغيل الملف
.ملاحظة
بما أن الحلقة
ترجع الحرف التالي الموجود في النص في كل دورة, فهذا يعني أن النوع أيضاً يعتبر .
بما أن الحلقة
ترجع الحرف التالي الموجود في النص في كل دورة, فهذا يعني أن النوع أيضاً يعتبر .أمثلة حول إنشاء
في المثال التالي قمنا ببناء كلاس يعطينا
لا نهاية له. أي قمنا ببناء Infinite Iterator.
في المثال التالي قمنا ببناء كلاس يعطينا
لا نهاية له. أي قمنا ببناء Infinite Iterator.المثال الأول
سنحصل على النتيجة التالية عند تشغيل الملف
.
في المثال التالي قمنا ببناء كلاس يعطينا
يعطينا القيم المضاعفة للعدد 2 مع جعل المستخدم قادر على تحديد عدد القيم الأقصى الذي سيتم إرجاعه.
سنحصل على النتيجة التالية عند تشغيل الملف
.في المثال التالي قمنا ببناء كلاس يعطينا
يعطينا القيم المضاعفة للعدد 2 مع جعل المستخدم قادر على تحديد عدد القيم الأقصى الذي سيتم إرجاعه.المثال الثاني
سنحصل على النتيجة التالية عند تشغيل الملف
.
سنحصل على النتيجة التالية عند تشغيل الملف
.
تعليقات
إرسال تعليق