قواعد بناء الجملة الأساسية في لغة بايثون
فيما يلي توضيح لأهم القواعد المتعلقة ببناء الجمل البرمجية في لغة بايثون:
1. المسافة البادئة (Indentation)
تعتمد لغة البرمجة بايثون على المسافة البادئة (المسافة الموجودة في بداية سطر التعليمات البرمجية) لتحديد كتل التعليمات البرمجية، واستبدال الأقواس { } المستخدمة في العديد من اللغات الأخرى مثل سي++. يجب أن يكون حجم المسافة البادئة متسقة في جميع أنحاء كتلة التعليمات البرمجية الواحدة.
مثال:
if True:
print("تجربة المسافة البادئة")
في هذا السياق، تعد جملة الطباعة ("تجربة المسافة البادئة") print جزءًا من كتلة الشرط if بسبب المسافة البادئة الخاصة بها. إذا لم تتم إضافة المسافة البادئة، ستظهر رسالة خطأ تشير إلى ذلك، مثل:
IndentationError: expected an indented block
2. التعليقات (Comments)
عادةً ما تستخدم التعليقات لشرح التعليمات البرمجية دون تنفيذها. في لغة البايثون، يتم إنشاء التعليقات عن طريق وضع رمز الشباك # قبل النص.
مثال:
#جملة طباعة
print("مرحبا")
في هذا السياق، يعد السطر الذي يحتوي على "جملة طباعة" تعليقًا، وبالتالي لن ينفذ.
3. المتغيرات (Variables)
تعتبر لغة بايثون من النوع الديناميكي، مما يعني أنه ليس هناك حاجة لتعريف نوع المتغير عند إنشائه، يتم إنشاء المتغيرات عند تعيين قيمتها لأول مرة.
مثال:
MyNumber = 9
MyString = "!مرحباً"
في هذا السياق، سيتم إعتبار MyNumber كمتغير من نوع رقم صحيح (Integer) و MyString كمتغير من نوع نص (String).
4. الجمل (Statements)
برامج بايثون تتألف من مجموعة من الجمل، وتُعرف الجملة بأنها التعليمات التي يمكن لمترجم بايثون تنفيذها. تتميز لغة بايثون بتمييز نهاية الجملة بعلامة سطر جديد، ومع ذلك، يمكن تمديد الجملة على أكثر من سطر باستخدام القوسان ( ) أو المعقوفتان [ ] أو الحاصرتان { }.
مثال:
MyList = [
1, 2, 3,
4, 5, 6
]
في هذا السياق، تم تعريف القائمة MyList ضمن عدة أسطر. يمكن وضع العناصر في نفس السطر أو توزيعها عبر أسطر متعددة كما هو موضح. التوزيع عبر أسطر متعددة يمكن أن يحسن من وضوح النص البرمجي، خاصة إذا كانت القائمة تحتوي على عدد كبير من العناصر.
5. الدوال (Functions)
تُعرّف الدوال في بايثون بكلمة مفتاحية def، يليها اسم الدالة وبين قوسين تحدد المدخلات المطلوبة للدالة، وتُختم بعلامة النقطتان الرأسيتان : . يتم وضع مسافة بادئة في نَص الدالة.
مثال:
def Greet(name) :
print(" مرحبًا" + name)
في هذا السياق، تم تعريف الدالة Greet ليتم استخدامها لتحية المستخدم بناءً على الاسم الذي يتم تمريره إليها.
6. الأصناف ( Classes)
تستخدم الأصناف لإنشاء أنواع كائنات جديدة في لغة بايثون. ويتم تعريفها باستخدام الكلمة الأساسية class.
مثال:
class MyClass:
def Greet(self):
print("مرحبًا بك")
في هذا السياق، تم تعريف الصنف MyClass الذي يحتوي على الدالة Greet والتي تقوم بطباعة العبارة "مرحبًا بك".
7. جمل الاستيراد (Import Statements)
عادةً ما يبدأ النص البرمجي في لغة بايثون بعبارات الاستيراد لتضمين الوحدات (Modules) الخارجية، وهي مجموعة من التعليمات البرمجية التي يمكن إعادة استخدامها بسهولة.
مثال:
import time
في هذا السياق، تم استيراد وحدة time من مكتبة بايثون. وحدة time توفر مجموعة من الأدوات والوظائف للتعامل مع الوقت.
8. الكتلة الرئيسية (Main Block)
في حالة البرامج الضخمة، من الأفضل أن يكون هناك جزء رئيسي للتحكم في تنفيذ البرنامج. عندما تتم كتابة وحدات في بايثون، قد تحتوي هذه الوحدات على تعليمات برمجية مصممة للاستخدام كبرنامج نصي (Script) وليس كدالة يمكن استيرادها إلى برامج أخرى. على سبيل المثال، قد تحتوي الوحدة على نص برمجي لمعالجة مدخلات من سطر الأوامر (CLI). إذا تم استيراد هذا النص البرمجي إلى وحدة أخرى، مثلًا لاختبار الوحدة أو استخدامها كمكتبة، فإن النص البرمجي الذي يهدف فقط للاستخدام كبرنامج نصي قد ينفذ بشكل غير متوقع. هذا قد يتسبب في تنفيذ تعليمات برمجية غير مرغوب فيها، مثل معالجة مدخلات سطر الأوامر، مما قد يؤثر على سلوك البرنامج بشكل عام. لحل هذه المشكلة، يمكن استخدام شرط :'__if __name__ == '__main في بايثون. هذا الشرط يضمن أن التعليمات البرمجية داخل الكتلة التي تتبعه سيتم تنفيذها فقط إذا كان الملف يتم تشغيله مباشرة (كبرنامج نصي مستقل)، وليس عند استيراده كجزء من برنامج آخر.
مثال:
def main():
# التعليمات البرمجية الرئيسية التي سيتم تنفيذها فقط عند تشغيل البرنامج
print("مرحبًا")
if __name__ == '__main__':
main()
في هذا السياق، تم تعريف الدالة main التي تحتوي على التعليمات البرمجية التي يجب تنفيذها. يقوم الشرط :'__if __name__ == '__main بالتحقق مما إذا كان الملف يتم تنفيذه مباشرةً (وليس استيراده كجزء من برنامج آخر). إذا كان الشرط صحيحًا، فسيتم استدعاء الدالة main.