المسافة البادئة هي ميزة حيوية لرمز يمكن قراءته وصيانته ، لكن القليل من اللغات تفرضه. بايثون هي واحدة من هؤلاء القلائل.

إذا حددت Python أنه تم وضع مسافة بادئة للشفرة بشكل غير صحيح ، فسترى رسالة "IndentationError" عند تشغيل الكود الخاص بك. لكن كيف تصلح هذا ، وكيف تمنعه ​​في المستقبل؟

لماذا تحصل على خطأ المسافة البادئة في بايثون؟

خطأ "IndentationError: المتوقع وجود مسافة بادئة للكتلة" هو شيء من المحتمل أن تراه عند بدء استخدام Python لأول مرة ، خاصة إذا كنت قادمًا من لغة برمجة أخرى.

ال تفاصيل قواعد المسافة البادئة في بايثون معقدة ، لكنها تتلخص في شيء واحد: وضع مسافة بادئة للشفرة في كتل. هذا ينطبق على الوظائف ، والبنود ، وما إلى ذلك. في ما يلي مثال على كود Python المنسق بشكل غير صحيح:

fname = "غوراف"
lname = "سيال"

إذا كان fname == "Gaurav" و lname == "Siyal":
طباعة ("أنت غوراف")
آخر:
طباعة ("أنت شخص آخر")

عندما تحاول تشغيل الكود أعلاه ، ستصلك رسالة مثل هذه:

 ملف "tmp.py" ، السطر الخامس
طباعة ("أنت غوراف")
^
خطأ مسافة بادئة: توقع وجود مسافة بادئة لكتلة

بدلاً من ذلك ، يجب إضافة إما علامة تبويب أو سلسلة من المسافات في بداية السطرين اللذين يمثلان الكتل:

instagram viewer
fname = "غوراف"
lname = "سيال"

إذا كان fname == "Gaurav" و lname == "Siyal":
طباعة ("أنت غوراف")
آخر:
طباعة ("أنت شخص آخر")

إذا قمت بعمل مسافة بادئة بمسافات ، فيمكنك في الواقع استخدام أي رقم تريده ، طالما أنك ثابت ولا لبس فيه. يستخدم معظم المبرمجين مسافتين أو أربعة أو ثمانية.

الحالات الشائعة للمسافة البادئة الصحيحة

فيما يلي بعض الأمثلة التي يمكنك الرجوع إليها ، حتى تتمكن من التأكد من أنك تقوم بعمل مسافة بادئة بشكل صحيح.

إذا كانت العبارات

مسافة بادئة للكتلة التي تلي ملف إذا بيان:

إذا كان my_name == "Gaurav":
طباعة ("اسمي غوراف")
عودة صحيح

المهام

جسم الوظيفة عبارة عن كتلة. يجب وضع مسافة بادئة لهذه الكتلة بأكملها:

def magic_number ():
النتيجة = 42
نتيجة العودة

print magic_number ()

للحلقات

كما هو الحال مع تعليمة if ، يجب وضع مسافة بادئة لجسم حلقة for بمقدار مستوى واحد أكثر من السطر الذي يبدأ بـ بالنسبة الكلمة الأساسية:

لأني في النطاق (10):
طباعة (ط)

تأكد من قيام محررك بعمل مسافة بادئة صحيحة

تدعم معظم برامج تحرير النصوص الحديثة المسافة البادئة للتعليمات البرمجية تلقائيًا. إذا قرر المحرر الخاص بك أنه يجب وضع مسافة بادئة لسطر من التعليمات البرمجية ، فسيضيف علامات تبويب أو مسافات تلقائيًا.

في سبايدر، تتوفر خيارات المسافة البادئة تحت أدوات> تفضيلات> كود المصدر:

إذا كنت تستخدم vim ، يمكنك ذلك تحرير التكوين الخاص بك واستخدام وضع مسافة تلقائية والخيارات ذات الصلة لتكوين المسافة البادئة. على سبيل المثال ، إليك إعداد شائع:

ضبط Autoindent
تعيين علامة التبويب
ضبط tabstop = 4
تعيين softtabstop = 4
ضبط shiftwidth = 4

سيؤدي هذا إلى مسافة بادئة تلقائيًا باستخدام أربع مسافات.

ومع ذلك ، لا يمكن لأي محرر جعل المسافة البادئة التلقائية مقاومة للرصاص. ستظل بحاجة إلى الانتباه إلى المسافة البادئة لأن بعض الحالات غامضة:

في هذا المثال ، النهائي إرجاع تم وضع مسافة بادئة لمستوى واحد في العبارة من توقيع الوظيفة في السطر الأول. ومع ذلك ، إذا وضعت المؤشر في نهاية السطر قبل الأخير واضغطت يدخل، قد يحدث أحد أمرين. يمكن للمحرر الخاص بك وضع المؤشر:

  1. مستويان من المسافة البادئة ، محاذاة مع "الدقة = ..."
  2. مستوى مسافة بادئة واحدة بالداخل ، بمحاذاة "آخر:"

لا يستطيع المحرر الخاص بك التمييز بين هاتين الحالتين: قد ترغب في إضافة المزيد من التعليمات البرمجية في كتلة if / else ، أو قد لا ترغب في ذلك.

معالجة خطأ "كتلة متوقعة ذات مسافة بادئة" في Python

الأخطاء تحدث يوميًا في Python ، تمامًا كما هو الحال في أي لغة برمجة أخرى. قد تضيف قواعد Python الصارمة حول المسافة البادئة نوعًا جديدًا من الخطأ للتفكير فيه ، لكنها مفيدة. الشفرة ذات المسافة البادئة بشكل صحيح هي أكثر قابلية للقراءة ومتسقة عبر الفرق.

خطأ المسافة البادئة ليس هو الخطأ الوحيد الذي سيتعين عليك التعامل معه. من المفيد التعرف على أخطاء Python الشائعة حتى تعرف كيفية تصحيحها وماذا تفعل لإصلاحها.

ماذا يعني خطأ "فهرس قائمة خارج النطاق" في Python؟

اقرأ التالي

يشاركسقسقةيشاركبريد الالكتروني

مواضيع ذات صلة

  • برمجة
  • بايثون

عن المؤلف

غوراف سيال (تم نشر 64 مقالة)

يتمتع Gaurav Siyal بخبرة عامين في الكتابة ، ويكتب لسلسلة من شركات التسويق الرقمي ووثائق دورة حياة البرامج.

المزيد من Gaurav Siyal

اشترك في نشرتنا الإخبارية

انضم إلى النشرة الإخبارية لدينا للحصول على نصائح تقنية ومراجعات وكتب إلكترونية مجانية وصفقات حصرية!

انقر هنا للاشتراك