المدرب: مرحبًا ومرحبًا بعودتك.
في هذا الفيديو نتحدث
عن فئات المولدات والمكررات.
سأريكم هنا فصلًا ينفذ مولد الرقم
100 الذي فعلناه في الفيديو الأخير.
لذا سأسميها FirstHundredGenerator.
هكذا ، ثم سنقوم بتعريف طريقة init.
الذي سيبدأ الرقم على أنه صفر ، ثم سنقوم بتعريف
الشرطة السفلية التالية ، والشرطة السفلية
، والطريقة التالية.
عندما تحدد الطريقة التالية في الفصل ،
أي كائن يمكنك الاتصال به بجوار الكائن الخاص بي ، مثل ذلك.
إذن ، هذه مرة أخرى ، طريقة غير متوقعة
تتيح لك الاتصال بها بعد ذلك.
كما أنه يخبر بايثون بشيء مهم جدًا.
سننظر في ذلك بعد قليل.
لذا ، إذا أردنا توليد 100 رقم ، فكل ما علينا فعله
هو الحصول على الذات. number ، وإعادته
، وزيادته بمقدار واحد.
لذلك ، إذا كان النفس. رقم أقل من 100 ، لن نستخدم
الكلمة الأساسية للإنتاجية هنا ، بالمناسبة
، لأنك لست بحاجة إلى ذلك في منشئ الفصل.
آسف ، في واحدة من هذه الأشياء. (يضحك) لن أقول
أي شيء يمكن أن يساء فهمه
على أنه خطأ.
فقط حتى لا أربكك.
ما يجب فعله هو ، إذا كان الرقم
أقل من 100 ، نضع ذلك
في متغير ، ثم نزيد الرقم بمقدار واحد ، ثم
نعيد الرقم الحالي ، وهو القيمة
السابقة ، أي صفر.
نحن نزيد الذات. عددًا تلو الآخر ، نعيد صفرًا.
تمام.
الآن مهم في الفصل علينا
، إذا أردنا التوقف
عن إرجاع الأرقام
، مثل ذلك ، فنحن لا نستخدم حلقة هنا لإيقافنا
عندما نصل إلى 100.
لذلك ، عندما نصل إلى 100 ، يتعين علينا
رفع خطأ خاص يسمى إيقاف التكرار.
خطأ إيقاف التكرار يخبر Python
أننا وصلنا إلى نهاية هذا المولد.
أنا أقول مولد وأنا أترنح قليلاً ، أم هنا.
لأن هذا هو في الأساس مولد لذلك ، تبدأ من
الصفر ، ثم تقرر
ما إذا كنت تريد إرجاع رقم جديد ، وتحصل على هذا
الرقم ، ثم تعيده ، ثم يتوقف
البرنامج.
لكن الشيء الخاص بك يبقى ، ويتذكر الذات. رقم.
لذا ، إذا كان لدينا جنيني ، وهذا هو أول مائة مولد
لدينا هناك.
جنرال بلدي. الرقم بالطبع
هو صفر في البداية.
حق؟
دعنا نريك ذلك.
جيني الرقم صفر في البداية.
إذا كنت تفعل جنسي. التالي مثل ذلك
، ثم اطبع
جنسي. رقم مرة أخرى ، تحصل
على واحد.
هذا منطقي أليس كذلك؟
لأن الطريقة التالية هنا هي التحقق مما إذا كان
الرقم أقل من 100 ، ثم
زيادته بمقدار واحد.
لذلك كل هذا منطقي.
الآن ، من أجل جعله يتصرف مثل
المولد ، نقول فقط التالي من جيني ، هكذا.
ثم يمكننا تشغيل هذا مرة أخرى ، ويظهر نفس الشيء.
بالطبع ، التالي من جيني
هو في الواقع إرجاع الرقم الذي كان عليه قبل زيادته.
لذا بدلاً من طباعة جنرالتي. رقم هنا ، يمكننا فقط طباعة
التالي من جيني ، وهنا يمكننا أيضًا طباعة
التالي من جيني ، وسنحصل على نفس الناتج
، صفر وواحد.
في المرة الأولى التي ندعوها بعد ذلك ، نحصل على القيمة
الحالية ، وهي صفر ، لكننا زدنا الذات. عدد بواحد.
في المرة التالية التي ندعو فيها
بعد ذلك ، نكرر مرة أخرى زيادة هذا الرقم بمقدار
واحد ، لكننا سنعيد القيمة السابقة ، وهي واحد.
إذن الآن هذا يتصرف تمامًا مثل
المولد ، وبالفعل ، هذا مولد.
لا يتم تخزين جميع القيم حتى 100 في قائمة.
إنه يمنحك واحدًا تلو الآخر.
إنه يولدها كما تسمي الوظيفة التالية.
آسف ، الطريقة التالية.
بالمناسبة ، dunder next هو جديد في Python Three.
لذلك إذا كنت تستخدم Python
2 ، فسيتعين عليك تحديد التالي بدون الشرطة السفلية.
هذا فقط لبايثون اثنان.
إذا كنت تستخدم Python ثلاثة ، فاستخدم dunder بعد ذلك.
حسنًا ، تسمى
جميع الكائنات التي تحتوي على هذه الطريقة التالية المظلمة
التكرارات.
جميع المولدات ، مثل هذا ، هي مكررات
، لكن ليس العكس.
لذلك يمكنك الحصول على مكررات لا تولد أرقامًا.
على سبيل المثال ، إذا قمت بتعديل مُولِّد
الأرقام الأول لإرجاع جزء من قائمة مثل ، أول مائة
مكرر ، وليس مُنشئًا ، فيمكنك الحصول على طريقة
init هنا ، والتي تقول self.
الأعداد
هي ، واحد ، اثنان ، ثلاثة ، أربعة ، خمسة.
من الواضح أنه ليس ، ليس أول
مائة ، هذا أول خمسة مكرر ، الذات أنا هي صفر.
هذا هو الفهرس الذي ستبدأ بإعادته.
صفر ، والأرقام التي نرجعها
هي من واحد إلى خمسة.
ثم مرة أخرى ، الطريقة التالية هنا ستقول ما إذا كنت
أقل من الذات. الأرقام ، العودة الذاتية.
أرقام أنا.
حق؟
رفع آخر وقف التكرار.
آسف ، لا يمكنك رؤية ذلك جيدًا ، لكن
ها نحن ذا.
لذلك كل ما نفعله هنا هو أننا لا ننتج أي شيء.
نحن نقول إذا كنت أقل من ،
بالمناسبة ، علينا بالطبع القيام بذلك
، أنا زائد يساوي واحدًا ، وإرجاع التيار.
علينا زيادة واحد ، وعلينا
زيادة أنا بواحد بالطبع.
مرة أخرى ، نحن لا ننشئ أرقامًا جديدة.
نحن نتعقب أنا ، الفهرس الموجود حاليًا ،
عليك أن تفعل ذلك بطريقة ما ، يجب أن يكون
هذا ذاتيًا. أنا بالمناسبة.
يمكنك أن تقول أنني لم أعد هذا المثال بالفعل ، لكنني أردت
فقط أن أوضح لك بسرعة أنه ليس
كل المولدات ، وليس كل التكرارات ، يجب أن تكون
مولدات.
في هذه الحالة ، لا تقوم بتوليد الأرقام
، بل تقوم بإعادتها من القائمة.
إذن ، مجرد مثال سريع هناك.
سيكون لديك هذا في نموذج التعليمات البرمجية
للقسم ، إذا كنت أتذكر إضافته.
لذلك ، هنا ، ما نفعله عندما نحدد الطريقة التالية ، هو أننا نحدد
مكررًا ، شيء يمكنك
تجاوزه واحدًا تلو الآخر ، عن طريق استدعاء
الوظيفة التالية.
ليس بالضرورة أن يولد كل أرقامه ، ولكن يمكنه ، ولكن
مرة أخرى ، يمكنه أيضًا إعادتها من قائمة ، أو من
مرسل ، أو في أي مكان آخر.
لذلك ، من المهم في بايثون.
التكرارات هي تلك الأشياء التي
لها طريقة تالية.
يمكنك الاتصال بهم بعد ذلك.
لدينا مكرر لأنفسنا ، لكن
لا يمكننا أن
نفعل ذلك من أجل
أنا في جيني ، في جيني.
لا يمكنك القيام بذلك.
دعني أخبرك بذلك الآن.
إذا قمنا بتشغيل هذا ، فستحصل على خطأ يقول
، أول 100 كائن منشئ غير قابل للتكرار
، لكنني قلت للتو إنه مكرر ، وهو مكرر.
ما يعنيه المكرر هو أنه يمكنك استدعاء
الوظيفة التالية عليه ، وسوف
يعطيك القيمة التالية.
لكن المكرر والمتكرر أشياء مختلفة.
يمكنك التكرار عبر عنصر متكرر ، ويتم
استخدام المكرر للحصول على القيمة التالية من تسلسل
أو من القيم التي تم إنشاؤها.
إذن ما لدينا هنا هو مكرر
وليس تكرارًا.
سنتعلم في الفيديو التالي
كيفية إنشاء ملف متكرر ،
حتى نتمكن من إجراء حلقات
متكررة عليه ، أو القيام بأشياء مثل مجموع جيني
، أو كما تعلمون ، أيًا كان ما تريد القيام به.
قائمة جنسي.
تحتاج هذه الأشياء هنا إلى تكرار وليس مكررًا.
لنفعل ذلك في الفيديو التالي.
سأراك هناك.