لنتحدث عن موضوع مهم للغاية إذا كنت تريد أن تكون مبرمجًا رائعًا ، وهذا ما يسمى تصحيح الأخطاء.
كما ترى ، لا أحد يكتب برامج مثالية.
إنه مستحيل بصدق.
سنرتكب أخطاء دائمًا ويتم تحسين البرامج باستمرار.
نعمل باستمرار على تحسين الكود الخاص بنا حيث نجد المزيد والمزيد من الأخطاء لأن البرامج مليئة بالأخطاء أو ما نسميه
الأخطاء أو الاستثناءات في وقت التشغيل عند تشغيل الكود.
كما ترى ، فإن عملية البحث عن هذه الأخطاء أو الأخطاء وإزالتها من التعليمات البرمجية الخاصة بنا تسمى تصحيح الأخطاء.
في جزء كبير من وقتنا كمبرمجين يقومون بتصحيح الكود ، سواء أكان رمزنا الخاص أو كود أشخاص آخرين
، ونكتشف ، مهلا ، كيف لا يعمل هذا؟
وكبار المطورين بارعون حقًا في تصحيح الأخطاء.
لنتحدث في هذا الفيديو عن بعض توصياتي لتصحيح الأخطاء وما هي بعض الممارسات
الجيدة.
الآن ، ضع في اعتبارك أنك تتحسن في تصحيح أخطاء التعليمات البرمجية بينما تقوم بالكود أكثر وأكثر.
لذا فإن أفضل شيء يمكنك القيام به هو الاستمرار في التدريب ، والاستمرار في كتابة كود Python.
إذن ما هي بعض نصائحي؟
حسنًا ، أولاً ، أنت بالتأكيد تريد استخدام بعض الإقراض.
وما هو الإقراض؟
حسنًا ، لقد تحدثنا عن ذلك بشكل صحيح عندما أنشأنا بيئة المطورين الخاصة بنا.
يسمح لنا الإقراض بالكشف أثناء قيامنا برمز بعض المشكلات في التعليمات البرمجية الخاصة بنا.
على سبيل المثال ، إذا قمت بعمل num بالإضافة إلى أربعة هنا وحصلت على تسطير أحمر ورأيت هنا أن إشعارات إقراض
Pi Flakes قبل تشغيل الكود الخاص بي ، فهناك رقم غير محدد اسمه NUM.
لذا فإن الإقراض يسمح لنا بالعثور على هذه الأخطاء حتى قبل تشغيل الكود الخاص بنا.
ورأينا أنه يمكننا استخدام معرفات مثل pi charm التي تم إقراضها بالفعل أو استخدام نص سامي أو كود Visual Studio
وتثبيت حزم وإضافات مثل PI المعارة للحصول على إقراض بالفعل في التعليمات البرمجية الخاصة بنا.
هذه أداة مهمة حقًا.
بعد ذلك ، أوصي دائمًا باستخدام نوع من المعرف أو.
Ed ، لأن هؤلاء المحررين والمعرفات ، خاصة تلك الخاصة ببايثون مثل Pi char ، لديهم كل هذه
الأدوات المضمنة لنا لاستخدامها ، مثل التنسيق التلقائي على أساس Pep eight.
هل تتذكر دليل الأسلوب الرسمي الذي يحتويه مجتمع Python؟
يسمح لنا باكتشاف الأخطاء في التعليمات البرمجية الخاصة بنا ، دعنا نقول ، تمييز وتنسيق التعليمات البرمجية الخاصة بنا.
لذلك يصبح من السهل علينا اكتشاف أي أخطاء قبل تشغيل الكود.
أخيرًا ، تريد أن تكون قادرًا على تعلم قراءة الأخطاء.
وهذا شيء أحاول ممارسته معك كما تعلمنا ، بايثون.
على سبيل المثال ، إذا قمت بعمل أربعة زائد ، فلنقل رطانة هنا وأنقر فوق تشغيل.
حالا.
أرى.
مرحبًا ، في السطر السادس.
يوجد خطأ في ملف PI الرئيسي الخاص بي.
هناك خطأ في النوع ، وأرى هنا أنني أحاول إضافة int وسلسلة.
لذلك نحن قادرون على قراءة الأخطاء وفهم ما تعنيه.
ربما أفعل شيئًا كهذا.
إذا قمت بالنقر فوق تشغيل.
أحصل على خطأ في بناء الجملة.
وأعلم أن خطأ نحوي يعني ذلك.
مرحبًا ، مترجم Python يحاول قراءة الكود الخاص بي ، لكن ما كتبته للتو ليس بايثون.
ليس لدي فكرة عما تفعله.
هنا.
أرى أنه نهاية السطر أثناء فحص السلسلة الحرفية.
لذا أحاول قراءة هذه السلسلة وفجأة ينتهي البرنامج وكأنك من المفترض أن تنهي السلسلة
، هل تتذكر؟
لذا فإن القدرة على قراءة هذه الأخطاء أمر مهم حقًا.
وقد ناقشنا بعضًا منهم في هذه الدورة التدريبية ، وبعض أكثرها شيوعًا مثل خطأ نحوي
، حيث تكتب شيئًا لا يفهمه مترجم بايثون.
لدينا شيء مثل خطأ الاسم ، أليس كذلك؟
حيث نستخدم متغير غير موجود.
لذلك فإن بايثون لا تفهم.
مرحبًا ، ليس لدي أي فكرة عن الاسم.
ما هي قيمة الاسم؟
لدينا أشياء مثل كتابة الهواء.
هذا عندما لا نطابق نوع البيانات ونفترض أن سلسلة زائد أربعة.
لدينا أشياء مثل خطأ القيمة.
لدينا أشياء مثل الخطأ الرئيسي حيث نحاول الوصول إلى مفتاح غير موجود أو خطأ في السمة
حيث نحاول الوصول إلى طريقة الكائن وهذه الطريقة غير موجودة.
الآن ، هذه الأخطاء هي شيء رأيناه طوال الدورة ، وسنرى المزيد.
أود أن أقول إن هناك ما يقرب من 15 إلى 20 خطأ شائعة حقًا تظهر بنسبة 90٪ من الوقت.
وإذا كنت تتذكر ، فيمكنك دائمًا الانتقال إلى وثائق Python للتعرف عليها.
لكن هذا يأتي فقط مع الممارسة.
إذا رأيت خطأ لم تره من قبل ، فإنني أوصي بالذهاب إلى الوثائق وقراءتها
بمجرد رؤيتها.
عادة ما تميل إلى التذكر عندما يأتي بعد ذلك.
لكن اسمحوا لي أن أريكم طريقتي المفضلة لتصحيح الأخطاء البرمجية.
ويسمى PDB أو Python Debugger.
و PDB عبارة عن وحدة نمطية مضمنة في Python هنا.
ثانية.
تذكر أن الوحدة النمطية الخاصة بنا هي جزء من المكتبة القياسية التي تأتي بها Python و PDB هو مصحح أخطاء Python
للمترجمين الفوريين التفاعليين.
ويمكنك أن تقرأ عنها هنا ، لكن دعني أوضح لك ما تفعله.
هل ترى.
PDB مفيد للغاية لأنه يسمح لنا بالتفاعل مع الكود.
في السابق ، عندما كان لدينا دالة ، لنفترض أن لدينا الدالة ADD ولدينا العدد واحد والعدد اثنان
، ثم تُرجع هذه الدالة ببساطة عدد واحد زائد عدد اثنين.
الآن قبل ذلك ، إذا أردنا ، لنفترض تصحيح أخطاء هذا الرمز ولنفترض أننا نضيف أربعة زائد بعض الهراء
ويعطينا خطأ.
الخطوة الأولى التي سأتخذها هي على الأرجح إضافة طباعة هنا حتى أستطيع أن أقول طباعة.
مرحبًا ، ما الذي يحدث؟
دعني أرى.
رقم واحد ورقم اثنين وماذا أعطاني.
والطباعة هي حقًا طريقة سريعة جدًا وسهلة لتصحيح أخطاء التعليمات البرمجية الخاصة بك.
أنا أستخدمه طوال الوقت ، لكن PDB يعطينا دفعة إضافية قليلاً.
لذلك يمكننا استخدامه على هذا النحو.
نحن ببساطة نستورد PDB وبدلاً من استخدام شيء مثل وظيفة الطباعة ، يمكننا ببساطة أن نقول ، دعني أضيف
مسافة هنا.
يمكننا ببساطة أن نقول PDB لمصحح أخطاء Python ثم نقول set trace.
وتعيين التتبع ، أود أن أقول أنه أكثر الطرق فائدة لدينا في كائن PDB هذا الذي قمنا باستيراده.
ترى عندما أقوم بتشغيل طريقة محددة.
إنه يعطيني الآن مصحح أخطاء Python تفاعليًا يمكنني الآن كتابة الأوامر هنا واختبار الكود الخاص بي
بالفعل.
وهذا هو الجزء المثير للاهتمام الآن في PDB هذا ، أنا داخل السطر الثامن.
لذا حاول الكود الخاص بي العمل ، ولكن بعد ذلك توقف مؤقتًا بمجرد أن قال تتبع تعيين PDB.
والآن أنا في هذا العالم ويمكنني اختبار ما يجري حتى أستطيع أن أقول ، مرحبًا ، العدد واحد
، ما هذا؟
العدد واحد يساوي أربعة.
ماذا عن العدد الثاني.
حسنًا ، العدد اثنان عبارة عن سلسلة ويمكن أن أكون مثل أوه ، أنا أحاول إضافة سلسلة و int هذا ، هذا لا يعمل حتى
أتمكن من اكتشاف الأخطاء بهذه الطريقة أيضًا.
الآن هذا PDB التفاعلي يحتوي بالفعل على الكثير من الأشياء المفيدة.
لذلك إذا قمت بكتابة المساعدة هنا.
ترى أن؟
لدي أوامر يمكنني استخدامها في PDB.
لذلك لدي طن هنا.
لدي مخرج ، والذي أفترض أنه سيخرجني من PDB ، مصحح أخطاء Python.
لكن لدي أيضًا.
اشياء مثل.
دعنا نقول القائمة.
دعونا نرى ما تفعله القائمة.
لذلك عندما أكتب في القائمة هنا والآن يكون موقع الويب حقًا.
لا يظهر لي الكثير ، ولكن آمل أن تتمكن من رؤية القائمة.
وأعتقد نوعا من المخرجات.
أرى أنني أحصل على قائمة بالشفرة و OC الخاصة بي ، لكن دعنا نقول إنني لا أعرف بالضبط ما هي القائمة التي تعمل بشكل جيد.
PDB يسمح لنا بالكتابة والمساعدة ثم القائمة.
وعندما نفعل ذلك ، فإنه في الواقع يعطينا الوثائق ، تمامًا كما لدينا هنا.
إذا ذهبنا إلى القائمة ، دعنا نقول.
دعونا نرى.
قائمة ، قائمة ، قائمة ، قائمة.
هنا.
يعطيني التوثيق هنا.
لذلك تقول مصدر القائمة للملف الحالي.
حسنا.
لذلك فهو يسرد فقط شفرة المصدر التي كتبناها.
حسنا، هذا جيد.
ماذا يوجد هناك أيضآ؟
حسنًا ، لدينا أيضًا شيء مثل step أو se للاختصار والخطوة رائعة حقًا.
دعونا في الواقع نستخدم clear لإبراز هذا الأمر إلى الأعلى.
لذلك سأقول واضحًا حتى يزيل كل الفواصل.
دعنا نفعل.
لنجعل هذا أكبر قليلاً حتى تتمكن من الرؤية.
ها أنت ذا.
هذا أفضل.
حسنا.
الآن يمكنني فعل شيء مثل الخطوة والخطوة ستسمح لنا بالانتقال إلى السطر التالي.
لذا ، مرة أخرى ، إذا جعلنا هذا أكبر قليلاً.
ستقول الخطوة ، مرحبًا ، انتقل إلى السطر التاسع.
لذلك دعونا نرى ما سيحدث.
سأقوم بالكتابة في الخطوة.
أوه.
وحصلت على خطوة مرتين.
لذلك دعونا خطوة صحيحة.
وانظر إلى ذلك.
أذهب إلى السطر التالي في الكود الخاص بي وسيحصل علي.
مرحبًا ، هل لديك خطأ مطبعي؟
خطأ.
الخطأ الذي حصلنا عليه.
لذلك دعونا نضيف سطرًا آخر هنا.
لنفترض أننا نحاول جمع أربعة زائد خمسة هنا أو أربعة مضروبًا في خمسة
وإسنادها إلى متغير.
إذا أوقفت هذا وقمت بتشغيله مرة أخرى.
أنا الآن بالداخل.
هنا.
إذا كتبت الشاي ، أحصل على اسم.
هواء.
لم يتم تعريف الشاي لأن.
حسنًا ، أنا داخل الكود هنا في السطر الثامن ، لكننا لم نقم بتشغيل السطر التاسع بعد.
لذلك دعونا نفعل الخطوة.
والآن أنا في الجانب التالي.
لذا ، إذا قمت بإجراء pt الآن ، فسأحصل على hey t يساوي 20.
رائع.
لذلك يمكنني أن أخطو خطوة خلال الكود وهو أمر مفيد حقًا.
لدي أيضًا أشياء مثل المتابعة والتي تتيح لي المتابعة عبر الكود حتى أعيد شيئًا
وأواصل الخروج من PDB وألقي نظرة على ذلك.
فهمت الخطأ.
دعونا نجري هذا مرة أخرى.
أمر مفيد آخر هو a ويعطيني في الواقع جميع حجج الوظيفة الحالية التي نحن فيها.
لذا انظر إلى ذلك.
أحصل على كل الحجج التي مرة أخرى مفيدة حقًا.
هناك أيضًا الأمر w.
وهو ما يوضح لي سياق السطر الحالي الذي يتم تنفيذه.
لذا يمكنك أن ترى أين نحن هنا ، نحن في الإعلان.
دور.
لقد أطلقنا عليها هذه الحجج ، ونحن الآن على وشك تشغيل هذا الخط.
ثم أخيرًا ، بينما نقوم بتصحيح هذا.
حسنًا ، أعتقد أنني رأيت أخيرًا أن لدينا خطأ.
كان يجب أن نعطيه رقمًا حتى يمكنني الآن الخروج من هنا وإصلاح هذا الرقم بخمسة.
حتى الآن يمكنني فقط إزالة PDB الخاص بي وكل شيء.
يجب أن تعمل بشكل جيد مع الكود الخاص بي.
رائع.
لذا فإن PTB رائع في التنقل خلال التعليمات البرمجية الخاصة بك وتصحيح الأخطاء وتجربة أشياء مختلفة.
إنها تتطلب القليل من التدريب ، ولكن بعد يوم من اللعب مع PDB ، ستصبح جيدًا حقًا في تصحيح
الأخطاء.
لذلك بعد هذا الفيديو ، أوصيك بكتابة PDB ونأمل أن يكون لديك ملف Python كبير بما يكفي بحيث يمكنك
فقط تخطي وتجربة أوامر مختلفة باستخدام المساعدة ، باستخدام القائمة لمعرفة ما
هو متاح لك.
في الواقع ، أريد أن أريكم شيئًا أخيرًا.
لنفترض أننا نعود إلى الكود الخاص بنا ، تتبع مجموعة PDB.
أنا انقر فوق تشغيل.
هل يمكنني أن أفعل شيئًا كهذا حيث ألاحظ أنني أكتب أنا ولدي.
حسنًا ، الكود الخاص بي يعمل ، لكن هل يمكنني تغيير العدد اثنين ليصبح الآن مساوياً لبعض الهراء؟
حسنًا ، دعنا نرى ما إذا كنت سأفعل ذلك الآن.
ودعنا نبدأ بعد ذلك في تشغيل هذا السطر الأخير.
أحصل على هواء.
لذلك أنا قادر أيضًا على تغيير المتغيرات هنا وكتابة كود Python ربما لاختبار وظائفي.
هذا يعمل الآن.
يمكنني اختبار ، مهلا ، ماذا يحدث إذا قمنا بتغيير هذا المتغير إلى قيمة أخرى؟
مرة أخرى ، مفيد جدا جدا.