ما هو أمر pass في بايثون؟ الشرح الكامل مع أمثلة عملية

1. دور جملة pass في بايثون

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

2. ما هي جملة pass؟

جملة pass في بايثون هي عبارة تُستخدم للإشارة بوضوح إلى أن “لا شيء سيتم تنفيذه”. عادةً تحتاج بايثون إلى وجود تعليمة داخلية في البنية البرمجية، لكن في بعض الحالات قد ترغب في تأجيل التنفيذ أو عدم كتابة أي تعليمات مؤقتًا. هنا يأتي دور pass لتفادي الأخطاء مع الاحتفاظ بالبنية.

البنية الأساسية لـ pass

def my_function():
    pass
في هذا المثال، تم تعريف الدالة my_function() لكنها لا تحتوي على أي عملية. باستخدام pass نوضح أن الدالة غير مُنفذة بعد ولكننا لا نريد أن تسبب خطأ.

مثال الاستخدام: كعنصر نائب للدوال أو الفئات

في المراحل الأولى من التطوير، غالبًا ما يتم إنشاء الهيكل الأساسي للشيفرة دون تفاصيل التنفيذ. في هذه الحالات، تُستخدم pass لبناء الهيكل مؤقتًا.
class MyClass:
    pass
هنا، الفئة MyClass غير مُنفذة بعد، لكنها تُعتبر تركيبًا صحيحًا نحويًا. يُظهر pass الأجزاء غير المكتملة ويمنع الأخطاء أثناء التطوير.
RUNTEQ(ランテック)|超実戦型エンジニア育成スクール

3. مواقف يُستخدم فيها pass

تُستخدم جملة pass في مواقف عديدة، خاصة في الحالات التالية:

1. الدوال أو الفئات غير المُنفذة

كما ذكرنا، تُستخدم pass عندما لا يتم تحديد تفاصيل التنفيذ داخل الدالة أو الفئة بعد.
def future_function():
    pass

2. في جملة else الشرطية

في بعض الشروط، قد لا تحتاج إلى تنفيذ أي عملية. بما أن بايثون تُظهر خطأ إذا تُرك الشرط فارغًا، يمكن استخدام pass لتفادي ذلك.
for i in range(5):
    if i % 2 == 0:
        print(i)
    else:
        pass  # لا يتم تنفيذ أي شيء في حالة الأعداد الفردية

3. داخل معالجة الاستثناءات

عندما يحدث استثناء ولا تريد تنفيذ أي شيء محدد، يمكنك استخدام pass لتجاوز الخطأ مع استمرار التنفيذ.
try:
    risky_function()
except SomeError:
    pass  # لا يتم تنفيذ أي شيء عند حدوث خطأ

4. الفرق بين pass و continue و break

بينما تشير pass إلى “عدم تنفيذ أي شيء”، هناك جمل تحكم أخرى في بايثون لها وظائف مختلفة. نوضح الفرق فيما يلي:

الفرق مع continue

تُستخدم continue لتجاوز التكرار الحالي والانتقال إلى التكرار التالي في الحلقة. بينما pass لا تقوم بأي عملية وتكمل الحلقة كما هي.
for i in range(5):
    if i % 2 == 0:
        continue  # يتم تجاوز الأعداد الزوجية
    print(i)  # يتم طباعة الأعداد الفردية فقط

الفرق مع break

تُستخدم break لإنهاء الحلقة تمامًا، بخلاف pass أو continue.
for i in range(5):
    if i == 3:
        break  # تنتهي الحلقة عند الرقم 3
    print(i)
بينما pass لا تنهي الحلقة أو تتجاوز التكرار، بل تُبقي التنفيذ كما هو.
年収訴求

5. المفاهيم الخاطئة الشائعة حول pass وكيفية تجنب الأخطاء

من الأخطاء الشائعة لدى المبتدئين استخدام pass في مواقف غير ضرورية. يجب أن يُستخدم فقط عندما يكون وجود جملة إلزاميًا لكن لا توجد عملية للتنفيذ.

استخدام pass لتجنب الأخطاء

على سبيل المثال، ترك جملة شرطية فارغة يؤدي إلى خطأ. باستخدام pass يمكن تفادي ذلك.
a = 10
if a < 5:
    pass  # لم يتم تحديد العملية بعد لكن نستخدم pass لتفادي الخطأ
else:
    print("a أكبر أو يساوي 5")
كما يمكن استخدامه في تعريف الدوال والفئات لتوضيح نية “إضافة التنفيذ لاحقًا”.

6. الخلاصة: الاستخدام الفعال لـ pass

جملة pass في بايثون تؤدي دورًا خاصًا يتمثل في “عدم تنفيذ أي شيء”. تُستخدم بشكل أساسي في الدوال والفئات غير المُنفذة، الجمل الشرطية، ومعالجة الاستثناءات لتجنب الأخطاء أثناء التطوير. بخلاف continue أو break، فإن pass لا يُغير مسار التنفيذ، بل يمرره كما هو. فهم كيفية استخدام pass بشكل صحيح يُساعد المبرمجين من المبتدئين وحتى المحترفين على تحسين سير عمل التطوير.
侍エンジニア塾