أخطاء بايثون هي جزء من عملية البرمجة. يمكن أن تكون الأخطاء محبطة، لكنها يمكن أن تكون أيضًا فرصة للتعلم. في هذا الدليل، سنقدم لك نظرة عامة على أنواع أخطاء بايثون الشائعة وكيفية إصلاحها. سنناقش أيضًا بعض النصائح لتجنب الأخطاء في المستقبل.
تعد أخطاء بايثون جزءًا طبيعيًا من عملية البرمجة. يمكن أن تحدث الأخطاء بسبب مجموعة متنوعة من الأسباب، مثل الأخطاء في القواعد، أو الأخطاء في الأنواع، أو الأخطاء في الإستثناءات، أو الأخطاء في القيمة.
فيما يلي بعض أنواع أخطاء بايثون الشائعة:
أخطاء القواعد هي أخطاء تحدث عندما لا يتوافق كود بايثون مع قواعد اللغة. يمكن أن تحدث هذه الأخطاء بسبب مجموعة متنوعة من الأسباب، مثل:
فيما يلي بعض الأمثلة على أخطاء القواعد:
name = "kader"
print(namee)
سيؤدي هذا الكود إلى الخطأ التالي:
SyntaxError: invalid syntax
هذا لأن اسم المتغير “namee” غير صالح.
print(name)
سيؤدي هذا الكود إلى الخطأ التالي:
NameError: name 'name' is not defined
هذا لأن المتغير “name” غير محدد.
def add(x, y):
return x + y
def add(x, y, z):
return x + y + z
سيؤدي هذا الكود إلى الخطأ التالي:
TypeError: name 'add' is already defined
هذا لأن دالة باسم “add” تم تعريفها بالفعل.
if x > 0:
print(x)
else:
print(-x)
سيؤدي هذا الكود إلى الخطأ التالي:
SyntaxError: expected ':' after 'if'
هذا لأن علامة :
مفقودة بعد الكلمة المفتاحية if
.
لإصلاح أخطاء القواعد، يجب على المبرمجين تحديد سبب حدوث الخطأ. يمكن القيام بذلك عن طريق مراجعة رسالة الخطأ وفحص الكود بحثًا عن أي أخطاء في القواعد. بمجرد تحديد سبب الخطأ، يمكن للمبرمجين إجراء التغييرات اللازمة على الكود لإصلاحه.
فيما يلي بعض النصائح لتجنب أخطاء القواعد:
فيما يلي بعض أخطاء القواعد الشائعة:
هي أخطاء تحدث عندما يتم استخدام نوع بيانات غير صحيح في مكان ما. يمكن أن تحدث هذه الأخطاء بسبب مجموعة متنوعة من الأسباب، مثل:
فيما يلي بعض الأمثلة على أخطاء الأنواع:
x = 1
print("The value of x is: " + x)
سيؤدي هذا الكود إلى الخطأ التالي:
TypeError: can't convert int to str
هذا لأن قيمة المتغير “x” هي عدد صحيح، ولكن يتم محاولة طباعتها كسلسلة.
مثال أخر:
x = "123"
y = int(x)
print(x + y)
سيؤدي هذا الكود إلى الخطأ التالي:
TypeError: can't convert string to int
هذا لأن قيمة المتغير “x” هي سلسلة، ولكن يتم محاولة تحويلها إلى عدد صحيح.
x = 1
y = "2"
print(x / y)
سيؤدي هذا الكود إلى الخطأ التالي:
TypeError: unsupported operand type(s) for /: 'int' and 'str'
هذا لأن المتغيرات “x” و “y” لهما أنواع بيانات غير متوافقة.
لإصلاح أخطاء الأنواع، يجب على المبرمجين تحديد سبب حدوث الخطأ. يمكن القيام بذلك عن طريق مراجعة رسالة الخطأ وفحص الكود بحثًا عن أي أخطاء في الأنواع. بمجرد تحديد سبب الخطأ، يمكن للمبرمجين إجراء التغييرات اللازمة على الكود لإصلاحه.
فيما يلي بعض النصائح لإصلاح أخطاء الأنواع:
فيما يلي بعض أخطاء الأنواع الشائعة:
فيما يلي بعض النصائح لتجنب أخطاء الأنواع:
هي أخطاء تحدث عندما يحدث خطأ غير متوقع أثناء تشغيل البرنامج. يمكن أن تحدث هذه الأخطاء بسبب مجموعة متنوعة من الأسباب، مثل:
فيما يلي بعض الأمثلة على أخطاء الإستثناءات:
print(name)
سيؤدي هذا الكود إلى الخطأ التالي:
NameError: name 'name' is not defined
هذا لأن المتغير “name” غير محدد.
x = 1
y = 0
print(x / y)
سيؤدي هذا الكود إلى الخطأ التالي:
ZeroDivisionError: division by zero
هذا لأن محاولة تقسيم عدد صحيح على صفر خطأ غير متوقع.
file = open("my_file.txt")
print(file.read())
سيؤدي هذا الكود إلى الخطأ التالي:
FileNotFoundError: [Errno 2] No such file or directory: 'my_file.txt'
هذا لأن الملف “my_file.txt” غير موجود.
file = open("my_file.txt", "w")
file.write("Hello, world!")
file.close()
سيؤدي هذا الكود إلى الخطأ التالي:
PermissionError: [Errno 13] Permission denied: 'my_file.txt'
هذا لأن الملف “my_file.txt” محمي ضد الكتابة.
file = open("my_file.txt", "r")
print(file.read())
سيؤدي هذا الكود إلى الخطأ التالي:
FileNotFoundError: [Errno 2] No such file or directory: 'my_file.txt'
هذا لأن الملف “my_file.txt” فارغ.
يمكن للمبرمجين التعامل مع أخطاء الإستثناءات باستخدام بنية try-except
. تسمح هذه البنية للمبرمجين بتحديد التعليمات البرمجية التي يجب تنفيذها إذا حدث خطأ غير متوقع.
فيما يلي مثال على كيفية التعامل مع خطأ في عدم التعريف باستخدام بنية try-except
:
try:
print(name)
except NameError:
print("The variable 'name' is not defined.")
سيؤدي هذا الكود إلى طباعة الرسالة التالية إذا لم يتم تعريف المتغير name
:
The variable 'name' is not defined.
فيما يلي بعض أخطاء الإستثناءات الشائعة:
فيما يلي بعض النصائح لتجنب أخطاء الإستثناءات:
هي أخطاء تحدث عندما لا تتوافق قيمة المتغير مع ما توقعه البرنامج. يمكن أن تحدث هذه الأخطاء بسبب مجموعة متنوعة من الأسباب، مثل:
فيما يلي بعض الأمثلة على أخطاء القيمة:
x = "Hello, world!"
x = 1
سيؤدي هذا الكود إلى الخطأ التالي:
TypeError: can't convert str to int
هذا لأن قيمة المتغير “x” هي سلسلة، ولكن يتم محاولة تعيينها إلى عدد صحيح.
x = "Hello, world!"
y = 1
if x == y:
print("The values are equal.")
سيؤدي هذا الكود إلى الخطأ التالي:
TypeError: can't compare str to int
هذا لأن المتغيرين “x” و “y” لهما أنواع بيانات غير متوافقة.
x = "Hello, world!"
y = "123"
print(x + y)
سيؤدي هذا الكود إلى الخطأ التالي:
TypeError: unsupported operand type(s) for +: 'str' and 'str'
هذا لأن المتغيرين “x” و “y” لهما أنواع بيانات غير متوافقة.
لإصلاح أخطاء القيمة، يجب على المبرمجين تحديد سبب حدوث الخطأ. يمكن القيام بذلك عن طريق مراجعة رسالة الخطأ وفحص الكود بحثًا عن أي أخطاء في القيمة. بمجرد تحديد سبب الخطأ، يمكن للمبرمجين إجراء التغييرات اللازمة على الكود لإصلاحه.
فيما يلي بعض النصائح لإصلاح أخطاء القيمة:
فيما يلي بعض أخطاء القيمة الشائعة:
فيما يلي بعض النصائح لتجنب أخطاء القيمة:
Pdb هو اختصار لـ Python Debugger. إنه أداة تصحيح أخطاء قوية يمكنها مساعدتك في تحديد وإصلاح الأخطاء في برنامجك.
لبدء استخدام Pdb، يمكنك إدخال الأمر التالي في سطر الأوامر:
python -m pdb my_program.py
سيؤدي هذا إلى تشغيل برنامجك في وضع التصحيح. عند حدوث خطأ، سيتم إيقاف برنامجك وسيدخل Pdb في الوضع المستند.
في الوضع المستند، يمكنك استخدام الأوامر التالية للتنقل في البرنامج وفحص قيم المتغيرات:
فيما يلي بعض الأمثلة على كيفية استخدام Pdb لتصحيح الأخطاء:
(Pdb) l
سيؤدي هذا إلى عرض السطر الحالي من الكود.(Pdb) n
سيؤدي هذا إلى الانتقال إلى السطر التالي من الكود.(Pdb) p x
سيؤدي هذا إلى عرض قيمة المتغير “x”.(Pdb) c
سيؤدي هذا إلى متابعة تشغيل البرنامج حتى حدوث خطأ آخر.فيما يلي بعض النصائح لاستخدام Pdb:
يمكنك استخدام Pdb لتصحيح الأخطاء في برنامجك باتباع الخطوات التالية: