WEBVTT

00:00.240 --> 00:07.410
لنتحدث عن موضوع مهم للغاية إذا كنت تريد أن تكون مبرمجًا رائعًا ، وهذا ما يسمى تصحيح الأخطاء.

00:07.620 --> 00:11.000
كما ترى ، لا أحد يكتب برامج مثالية.

00:11.010 --> 00:13.410
إنه مستحيل بصدق.

00:13.440 --> 00:17.430
سنرتكب أخطاء دائمًا ويتم تحسين البرامج باستمرار.

00:17.640 --> 00:25.320
نعمل باستمرار على تحسين الكود الخاص بنا حيث نجد المزيد والمزيد من الأخطاء لأن البرامج مليئة بالأخطاء أو ما نسميه

00:25.320 --> 00:29.730
الأخطاء أو الاستثناءات في وقت التشغيل عند تشغيل الكود.

00:30.300 --> 00:38.790
كما ترى ، فإن عملية البحث عن هذه الأخطاء أو الأخطاء وإزالتها من التعليمات البرمجية الخاصة بنا تسمى تصحيح الأخطاء.

00:39.000 --> 00:46.470
في جزء كبير من وقتنا كمبرمجين يقومون بتصحيح الكود ، سواء أكان رمزنا الخاص أو كود أشخاص آخرين

00:46.470 --> 00:49.560
، ونكتشف ، مهلا ، كيف لا يعمل هذا؟

00:50.010 --> 00:54.690
وكبار المطورين بارعون حقًا في تصحيح الأخطاء.

00:55.380 --> 01:01.320
لنتحدث في هذا الفيديو عن بعض توصياتي لتصحيح الأخطاء وما هي بعض الممارسات

01:01.320 --> 01:02.370
الجيدة.

01:02.850 --> 01:07.380
الآن ، ضع في اعتبارك أنك تتحسن في تصحيح أخطاء التعليمات البرمجية بينما تقوم بالكود أكثر وأكثر.

01:07.380 --> 01:12.150
لذا فإن أفضل شيء يمكنك القيام به هو الاستمرار في التدريب ، والاستمرار في كتابة كود Python.

01:13.230 --> 01:14.940
إذن ما هي بعض نصائحي؟

01:14.970 --> 01:19.320
حسنًا ، أولاً ، أنت بالتأكيد تريد استخدام بعض الإقراض.

01:19.380 --> 01:21.250
وما هو الإقراض؟

01:21.270 --> 01:25.070
حسنًا ، لقد تحدثنا عن ذلك بشكل صحيح عندما أنشأنا بيئة المطورين الخاصة بنا.

01:25.080 --> 01:31.260
يسمح لنا الإقراض بالكشف أثناء قيامنا برمز بعض المشكلات في التعليمات البرمجية الخاصة بنا.

01:31.290 --> 01:40.290
على سبيل المثال ، إذا قمت بعمل num بالإضافة إلى أربعة هنا وحصلت على تسطير أحمر ورأيت هنا أن إشعارات إقراض

01:40.290 --> 01:46.320
Pi Flakes قبل تشغيل الكود الخاص بي ، فهناك رقم غير محدد اسمه NUM.

01:46.530 --> 01:51.510
لذا فإن الإقراض يسمح لنا بالعثور على هذه الأخطاء حتى قبل تشغيل الكود الخاص بنا.

01:51.870 --> 01:59.550
ورأينا أنه يمكننا استخدام معرفات مثل pi charm التي تم إقراضها بالفعل أو استخدام نص سامي أو كود Visual Studio

01:59.550 --> 02:06.990
وتثبيت حزم وإضافات مثل PI المعارة للحصول على إقراض بالفعل في التعليمات البرمجية الخاصة بنا.

02:07.020 --> 02:09.570
هذه أداة مهمة حقًا.

02:09.600 --> 02:15.480
بعد ذلك ، أوصي دائمًا باستخدام نوع من المعرف أو.

02:16.380 --> 02:23.040
Ed ، لأن هؤلاء المحررين والمعرفات ، خاصة تلك الخاصة ببايثون مثل Pi char ، لديهم كل هذه

02:23.070 --> 02:29.370
الأدوات المضمنة لنا لاستخدامها ، مثل التنسيق التلقائي على أساس Pep eight.

02:29.370 --> 02:34.410
هل تتذكر دليل الأسلوب الرسمي الذي يحتويه مجتمع Python؟

02:34.590 --> 02:42.600
يسمح لنا باكتشاف الأخطاء في التعليمات البرمجية الخاصة بنا ، دعنا نقول ، تمييز وتنسيق التعليمات البرمجية الخاصة بنا.

02:43.440 --> 02:47.670
لذلك يصبح من السهل علينا اكتشاف أي أخطاء قبل تشغيل الكود.

02:48.240 --> 02:52.050
أخيرًا ، تريد أن تكون قادرًا على تعلم قراءة الأخطاء.

02:52.350 --> 02:57.030
وهذا شيء أحاول ممارسته معك كما تعلمنا ، بايثون.

02:57.330 --> 03:04.260
على سبيل المثال ، إذا قمت بعمل أربعة زائد ، فلنقل رطانة هنا وأنقر فوق تشغيل.

03:06.230 --> 03:06.950
حالا.

03:06.950 --> 03:07.410
أرى.

03:07.430 --> 03:10.080
مرحبًا ، في السطر السادس.

03:10.100 --> 03:13.370
يوجد خطأ في ملف PI الرئيسي الخاص بي.

03:13.580 --> 03:19.310
هناك خطأ في النوع ، وأرى هنا أنني أحاول إضافة int وسلسلة.

03:19.950 --> 03:24.030
لذلك نحن قادرون على قراءة الأخطاء وفهم ما تعنيه.

03:25.380 --> 03:28.410
ربما أفعل شيئًا كهذا.

03:28.440 --> 03:29.790
إذا قمت بالنقر فوق تشغيل.

03:30.490 --> 03:31.900
أحصل على خطأ في بناء الجملة.

03:33.110 --> 03:36.440
وأعلم أن خطأ نحوي يعني ذلك.

03:36.440 --> 03:42.410
مرحبًا ، مترجم Python يحاول قراءة الكود الخاص بي ، لكن ما كتبته للتو ليس بايثون.

03:42.410 --> 03:43.880
ليس لدي فكرة عما تفعله.

03:45.410 --> 03:45.890
هنا.

03:45.890 --> 03:49.180
أرى أنه نهاية السطر أثناء فحص السلسلة الحرفية.

03:49.190 --> 03:54.590
لذا أحاول قراءة هذه السلسلة وفجأة ينتهي البرنامج وكأنك من المفترض أن تنهي السلسلة

03:54.590 --> 03:55.670
، هل تتذكر؟

03:56.770 --> 04:01.060
لذا فإن القدرة على قراءة هذه الأخطاء أمر مهم حقًا.

04:01.450 --> 04:07.390
وقد ناقشنا بعضًا منهم في هذه الدورة التدريبية ، وبعض أكثرها شيوعًا مثل خطأ نحوي

04:07.390 --> 04:10.420
، حيث تكتب شيئًا لا يفهمه مترجم بايثون.

04:10.780 --> 04:13.210
لدينا شيء مثل خطأ الاسم ، أليس كذلك؟

04:13.210 --> 04:16.720
حيث نستخدم متغير غير موجود.

04:17.710 --> 04:19.180
لذلك فإن بايثون لا تفهم.

04:19.180 --> 04:20.970
مرحبًا ، ليس لدي أي فكرة عن الاسم.

04:20.980 --> 04:22.810
ما هي قيمة الاسم؟

04:24.000 --> 04:25.650
لدينا أشياء مثل كتابة الهواء.

04:25.680 --> 04:31.470
هذا عندما لا نطابق نوع البيانات ونفترض أن سلسلة زائد أربعة.

04:32.220 --> 04:34.740
لدينا أشياء مثل خطأ القيمة.

04:35.470 --> 04:41.800
لدينا أشياء مثل الخطأ الرئيسي حيث نحاول الوصول إلى مفتاح غير موجود أو خطأ في السمة

04:41.800 --> 04:47.020
حيث نحاول الوصول إلى طريقة الكائن وهذه الطريقة غير موجودة.

04:47.710 --> 04:54.190
الآن ، هذه الأخطاء هي شيء رأيناه طوال الدورة ، وسنرى المزيد.

04:54.580 --> 05:02.380
أود أن أقول إن هناك ما يقرب من 15 إلى 20 خطأ شائعة حقًا تظهر بنسبة 90٪ من الوقت.

05:03.230 --> 05:07.370
وإذا كنت تتذكر ، فيمكنك دائمًا الانتقال إلى وثائق Python للتعرف عليها.

05:07.370 --> 05:09.620
لكن هذا يأتي فقط مع الممارسة.

05:09.650 --> 05:14.420
إذا رأيت خطأ لم تره من قبل ، فإنني أوصي بالذهاب إلى الوثائق وقراءتها

05:14.420 --> 05:16.260
بمجرد رؤيتها.

05:16.280 --> 05:19.490
عادة ما تميل إلى التذكر عندما يأتي بعد ذلك.

05:20.080 --> 05:23.920
لكن اسمحوا لي أن أريكم طريقتي المفضلة لتصحيح الأخطاء البرمجية.

05:25.050 --> 05:30.570
ويسمى PDB أو Python Debugger.

05:31.080 --> 05:35.070
و PDB عبارة عن وحدة نمطية مضمنة في Python هنا.

05:36.270 --> 05:36.750
ثانية.

05:36.750 --> 05:43.470
تذكر أن الوحدة النمطية الخاصة بنا هي جزء من المكتبة القياسية التي تأتي بها Python و PDB هو مصحح أخطاء Python

05:43.470 --> 05:46.200
للمترجمين الفوريين التفاعليين.

05:47.400 --> 05:51.180
ويمكنك أن تقرأ عنها هنا ، لكن دعني أوضح لك ما تفعله.

05:52.460 --> 05:52.860
هل ترى.

05:52.880 --> 05:58.070
PDB مفيد للغاية لأنه يسمح لنا بالتفاعل مع الكود.

05:58.550 --> 06:08.210
في السابق ، عندما كان لدينا دالة ، لنفترض أن لدينا الدالة ADD ولدينا العدد واحد والعدد اثنان

06:08.630 --> 06:14.630
، ثم تُرجع هذه الدالة ببساطة عدد واحد زائد عدد اثنين.

06:15.630 --> 06:23.460
الآن قبل ذلك ، إذا أردنا ، لنفترض تصحيح أخطاء هذا الرمز ولنفترض أننا نضيف أربعة زائد بعض الهراء

06:23.460 --> 06:24.930
ويعطينا خطأ.

06:26.760 --> 06:33.870
الخطوة الأولى التي سأتخذها هي على الأرجح إضافة طباعة هنا حتى أستطيع أن أقول طباعة.

06:33.870 --> 06:35.160
مرحبًا ، ما الذي يحدث؟

06:35.160 --> 06:35.610
دعني أرى.

06:35.610 --> 06:38.130
رقم واحد ورقم اثنين وماذا أعطاني.

06:38.970 --> 06:43.170
والطباعة هي حقًا طريقة سريعة جدًا وسهلة لتصحيح أخطاء التعليمات البرمجية الخاصة بك.

06:43.530 --> 06:48.480
أنا أستخدمه طوال الوقت ، لكن PDB يعطينا دفعة إضافية قليلاً.

06:49.780 --> 06:51.840
لذلك يمكننا استخدامه على هذا النحو.

06:51.850 --> 07:00.310
نحن ببساطة نستورد PDB وبدلاً من استخدام شيء مثل وظيفة الطباعة ، يمكننا ببساطة أن نقول ، دعني أضيف

07:00.310 --> 07:01.540
مسافة هنا.

07:01.540 --> 07:08.650
يمكننا ببساطة أن نقول PDB لمصحح أخطاء Python ثم نقول set trace.

07:09.310 --> 07:15.430
وتعيين التتبع ، أود أن أقول أنه أكثر الطرق فائدة لدينا في كائن PDB هذا الذي قمنا باستيراده.

07:16.520 --> 07:18.830
ترى عندما أقوم بتشغيل طريقة محددة.

07:22.300 --> 07:28.900
إنه يعطيني الآن مصحح أخطاء Python تفاعليًا يمكنني الآن كتابة الأوامر هنا واختبار الكود الخاص بي

07:28.900 --> 07:29.560
بالفعل.

07:30.290 --> 07:36.360
وهذا هو الجزء المثير للاهتمام الآن في PDB هذا ، أنا داخل السطر الثامن.

07:36.380 --> 07:41.630
لذا حاول الكود الخاص بي العمل ، ولكن بعد ذلك توقف مؤقتًا بمجرد أن قال تتبع تعيين PDB.

07:41.630 --> 07:47.510
والآن أنا في هذا العالم ويمكنني اختبار ما يجري حتى أستطيع أن أقول ، مرحبًا ، العدد واحد

07:47.510 --> 07:48.170
، ما هذا؟

07:48.200 --> 07:49.400
العدد واحد يساوي أربعة.

07:49.400 --> 07:50.420
ماذا عن العدد الثاني.

07:50.750 --> 07:57.050
حسنًا ، العدد اثنان عبارة عن سلسلة ويمكن أن أكون مثل أوه ، أنا أحاول إضافة سلسلة و int هذا ، هذا لا يعمل حتى

07:57.050 --> 08:00.050
أتمكن من اكتشاف الأخطاء بهذه الطريقة أيضًا.

08:00.680 --> 08:06.140
الآن هذا PDB التفاعلي يحتوي بالفعل على الكثير من الأشياء المفيدة.

08:06.140 --> 08:08.270
لذلك إذا قمت بكتابة المساعدة هنا.

08:09.670 --> 08:10.300
ترى أن؟

08:10.300 --> 08:14.140
لدي أوامر يمكنني استخدامها في PDB.

08:14.260 --> 08:16.510
لذلك لدي طن هنا.

08:16.510 --> 08:21.510
لدي مخرج ، والذي أفترض أنه سيخرجني من PDB ، مصحح أخطاء Python.

08:21.520 --> 08:23.020
لكن لدي أيضًا.

08:23.780 --> 08:24.710
اشياء مثل.

08:25.490 --> 08:26.570
دعنا نقول القائمة.

08:26.570 --> 08:27.740
دعونا نرى ما تفعله القائمة.

08:27.740 --> 08:31.970
لذلك عندما أكتب في القائمة هنا والآن يكون موقع الويب حقًا.

08:32.820 --> 08:35.940
لا يظهر لي الكثير ، ولكن آمل أن تتمكن من رؤية القائمة.

08:37.110 --> 08:38.940
وأعتقد نوعا من المخرجات.

08:38.940 --> 08:46.410
أرى أنني أحصل على قائمة بالشفرة و OC الخاصة بي ، لكن دعنا نقول إنني لا أعرف بالضبط ما هي القائمة التي تعمل بشكل جيد.

08:47.280 --> 08:50.970
PDB يسمح لنا بالكتابة والمساعدة ثم القائمة.

08:51.670 --> 08:57.700
وعندما نفعل ذلك ، فإنه في الواقع يعطينا الوثائق ، تمامًا كما لدينا هنا.

08:58.720 --> 09:00.820
إذا ذهبنا إلى القائمة ، دعنا نقول.

09:03.370 --> 09:03.910
دعونا نرى.

09:03.910 --> 09:05.470
قائمة ، قائمة ، قائمة ، قائمة.

09:06.130 --> 09:06.880
هنا.

09:06.880 --> 09:09.520
يعطيني التوثيق هنا.

09:09.520 --> 09:12.160
لذلك تقول مصدر القائمة للملف الحالي.

09:12.610 --> 09:12.880
حسنا.

09:12.880 --> 09:15.940
لذلك فهو يسرد فقط شفرة المصدر التي كتبناها.

09:16.030 --> 09:17.080
حسنا، هذا جيد.

09:17.080 --> 09:18.190
ماذا يوجد هناك أيضآ؟

09:19.090 --> 09:25.330
حسنًا ، لدينا أيضًا شيء مثل step أو se للاختصار والخطوة رائعة حقًا.

09:26.970 --> 09:29.910
دعونا في الواقع نستخدم clear لإبراز هذا الأمر إلى الأعلى.

09:29.910 --> 09:33.720
لذلك سأقول واضحًا حتى يزيل كل الفواصل.

09:35.480 --> 09:36.230
دعنا نفعل.

09:37.400 --> 09:39.460
لنجعل هذا أكبر قليلاً حتى تتمكن من الرؤية.

09:39.470 --> 09:39.970
ها أنت ذا.

09:39.980 --> 09:40.580
هذا أفضل.

09:40.610 --> 09:40.880
حسنا.

09:40.880 --> 09:47.120
الآن يمكنني فعل شيء مثل الخطوة والخطوة ستسمح لنا بالانتقال إلى السطر التالي.

09:47.120 --> 09:49.850
لذا ، مرة أخرى ، إذا جعلنا هذا أكبر قليلاً.

09:50.860 --> 09:53.440
ستقول الخطوة ، مرحبًا ، انتقل إلى السطر التاسع.

09:53.440 --> 09:54.370
لذلك دعونا نرى ما سيحدث.

09:54.370 --> 09:55.660
سأقوم بالكتابة في الخطوة.

09:57.630 --> 09:57.840
أوه.

09:57.840 --> 09:58.860
وحصلت على خطوة مرتين.

09:58.860 --> 09:59.910
لذلك دعونا خطوة صحيحة.

10:01.730 --> 10:02.600
وانظر إلى ذلك.

10:02.720 --> 10:06.770
أذهب إلى السطر التالي في الكود الخاص بي وسيحصل علي.

10:06.800 --> 10:08.030
مرحبًا ، هل لديك خطأ مطبعي؟

10:08.030 --> 10:08.510
خطأ.

10:08.540 --> 10:09.520
الخطأ الذي حصلنا عليه.

10:09.530 --> 10:11.250
لذلك دعونا نضيف سطرًا آخر هنا.

10:11.270 --> 10:19.640
لنفترض أننا نحاول جمع أربعة زائد خمسة هنا أو أربعة مضروبًا في خمسة

10:19.640 --> 10:22.310
وإسنادها إلى متغير.

10:24.170 --> 10:26.450
إذا أوقفت هذا وقمت بتشغيله مرة أخرى.

10:28.570 --> 10:30.100
أنا الآن بالداخل.

10:30.130 --> 10:30.820
هنا.

10:32.640 --> 10:35.310
إذا كتبت الشاي ، أحصل على اسم.

10:35.310 --> 10:35.760
هواء.

10:35.880 --> 10:37.560
لم يتم تعريف الشاي لأن.

10:37.560 --> 10:42.630
حسنًا ، أنا داخل الكود هنا في السطر الثامن ، لكننا لم نقم بتشغيل السطر التاسع بعد.

10:42.630 --> 10:44.220
لذلك دعونا نفعل الخطوة.

10:45.120 --> 10:46.800
والآن أنا في الجانب التالي.

10:47.940 --> 10:52.950
لذا ، إذا قمت بإجراء pt الآن ، فسأحصل على hey t يساوي 20.

10:53.190 --> 10:53.760
رائع.

10:53.760 --> 10:57.570
لذلك يمكنني أن أخطو خطوة خلال الكود وهو أمر مفيد حقًا.

10:58.080 --> 11:03.720
لدي أيضًا أشياء مثل المتابعة والتي تتيح لي المتابعة عبر الكود حتى أعيد شيئًا

11:03.720 --> 11:06.750
وأواصل الخروج من PDB وألقي نظرة على ذلك.

11:06.750 --> 11:07.620
فهمت الخطأ.

11:10.100 --> 11:11.570
دعونا نجري هذا مرة أخرى.

11:11.600 --> 11:18.560
أمر مفيد آخر هو a ويعطيني في الواقع جميع حجج الوظيفة الحالية التي نحن فيها.

11:18.560 --> 11:19.700
لذا انظر إلى ذلك.

11:19.700 --> 11:22.610
أحصل على كل الحجج التي مرة أخرى مفيدة حقًا.

11:23.240 --> 11:25.190
هناك أيضًا الأمر w.

11:25.860 --> 11:31.050
وهو ما يوضح لي سياق السطر الحالي الذي يتم تنفيذه.

11:32.200 --> 11:35.710
لذا يمكنك أن ترى أين نحن هنا ، نحن في الإعلان.

11:36.240 --> 11:36.990
دور.

11:38.130 --> 11:43.740
لقد أطلقنا عليها هذه الحجج ، ونحن الآن على وشك تشغيل هذا الخط.

11:45.970 --> 11:48.040
ثم أخيرًا ، بينما نقوم بتصحيح هذا.

11:48.040 --> 11:51.460
حسنًا ، أعتقد أنني رأيت أخيرًا أن لدينا خطأ.

11:51.460 --> 11:59.500
كان يجب أن نعطيه رقمًا حتى يمكنني الآن الخروج من هنا وإصلاح هذا الرقم بخمسة.

11:59.620 --> 12:02.950
حتى الآن يمكنني فقط إزالة PDB الخاص بي وكل شيء.

12:02.950 --> 12:05.410
يجب أن تعمل بشكل جيد مع الكود الخاص بي.

12:06.680 --> 12:07.280
رائع.

12:07.760 --> 12:12.710
لذا فإن PTB رائع في التنقل خلال التعليمات البرمجية الخاصة بك وتصحيح الأخطاء وتجربة أشياء مختلفة.

12:12.710 --> 12:19.520
إنها تتطلب القليل من التدريب ، ولكن بعد يوم من اللعب مع PDB ، ستصبح جيدًا حقًا في تصحيح

12:19.520 --> 12:20.900
الأخطاء.

12:20.930 --> 12:28.730
لذلك بعد هذا الفيديو ، أوصيك بكتابة PDB ونأمل أن يكون لديك ملف Python كبير بما يكفي بحيث يمكنك

12:28.730 --> 12:35.540
فقط تخطي وتجربة أوامر مختلفة باستخدام المساعدة ، باستخدام القائمة لمعرفة ما

12:35.540 --> 12:37.010
هو متاح لك.

12:38.060 --> 12:39.710
في الواقع ، أريد أن أريكم شيئًا أخيرًا.

12:40.340 --> 12:44.210
لنفترض أننا نعود إلى الكود الخاص بنا ، تتبع مجموعة PDB.

12:44.780 --> 12:45.800
أنا انقر فوق تشغيل.

12:47.670 --> 12:53.430
هل يمكنني أن أفعل شيئًا كهذا حيث ألاحظ أنني أكتب أنا ولدي.

12:53.430 --> 13:00.330
حسنًا ، الكود الخاص بي يعمل ، لكن هل يمكنني تغيير العدد اثنين ليصبح الآن مساوياً لبعض الهراء؟

13:02.230 --> 13:04.320
حسنًا ، دعنا نرى ما إذا كنت سأفعل ذلك الآن.

13:06.100 --> 13:08.740
ودعنا نبدأ بعد ذلك في تشغيل هذا السطر الأخير.

13:10.120 --> 13:11.140
أحصل على هواء.

13:11.200 --> 13:19.710
لذلك أنا قادر أيضًا على تغيير المتغيرات هنا وكتابة كود Python ربما لاختبار وظائفي.

13:19.720 --> 13:21.190
هذا يعمل الآن.

13:21.190 --> 13:25.300
يمكنني اختبار ، مهلا ، ماذا يحدث إذا قمنا بتغيير هذا المتغير إلى قيمة أخرى؟

13:26.220 --> 13:28.050
مرة أخرى ، مفيد جدا جدا.
