أوامر لغة بايثون: الدليل العملي للكلمات المحجوزة والدوال المدمجة

شروحات تقنية

إذا كنت تبحث عن "قائمة بجميع أوامر لغة بايثون"، فالإجابة الصادقة أولاً: بايثون لا تملك قائمة رسمية اسمها "الأوامر". ما يتخيله كثيرون على أنه "أوامر" هو في الحقيقة ثلاثة أشياء مختلفة: الكلمات المحجوزة (keywords) وعددها 35 كلمة ثابتة لا تتغير، والدوال المدمجة (built-in functions) وعددها نحو 70 دالة جاهزة، بالإضافة إلى العبارات والمعاملات (statements & operators). الخبر الجيد أنك لست مضطراً لحفظها، لأن بايثون نفسها تعطيك القائمة الكاملة بسطر واحد، وسأريك كيف بعد قليل.

فهم هذا الفرق يوفّر عليك وقتاً كبيراً: الكلمات المحجوزة جزء من قواعد اللغة نفسها ولا يمكن استخدامها كأسماء متغيرات، بينما الدوال المدمجة يمكن (نظرياً) استبدالها، وهو خطأ شائع سنعود إليه في النهاية.

الكلمات المحجوزة: العمود الفقري للغة

الكلمات المحجوزة هي كلمات ذات معنى ثابت في بايثون، مثل if وfor وdef. في الإصدار الحالي من بايثون 3 عددها 35 كلمة، وهي:

False, None, True, and, as, assert, async, await, break, class, continue, def, del, elif, else, except, finally, for, from, global, if, import, in, is, lambda, nonlocal, not, or, pass, raise, return, try, while, with, yield.

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

import keyword
print(keyword.kwlist)

هناك أيضاً "كلمات محجوزة مرنة" (soft keywords) مثل match وcase أُضيفت في بايثون 3.10، وتعمل ككلمات محجوزة في سياق معيّن فقط. تراها عبر keyword.softkwlist.

الدوال المدمجة الأكثر استخداماً

الدوال المدمجة جاهزة للاستخدام فور تشغيل بايثون دون أي استيراد. أكثرها تكراراً في العمل اليومي:

  • print() — لعرض القيم على الشاشة.
  • input() — لقراءة نص يكتبه المستخدم.
  • len() — لمعرفة طول قائمة أو نص.
  • type() — لمعرفة نوع القيمة.
  • range() — لتوليد سلسلة أرقام، تُستخدم كثيراً مع الحلقات.
  • int() وstr() وfloat() وbool() — لتحويل القيم بين الأنواع.
  • list() وdict() وset() وtuple() — لإنشاء هياكل البيانات.
  • sum() وmin() وmax() وsorted() — لعمليات على المجموعات.

للحصول على القائمة الكاملة لكل الدوال المدمجة في جهازك:

print(dir(__builtins__))

الفرق الذي يربك المبتدئين

كثيرون يخلطون بين ثلاثة مفاهيم. هذا الجدول يوضّح الفرق بسرعة:

النوعمثالهل يمكن استخدامه كاسم متغير؟كيف تستدعيه؟
كلمة محجوزةfor, if, returnلا، سيعطي خطأجزء من بنية الكود
دالة مدمجةprint(), len()يمكن لكنه خطأ فادحتكتبها متبوعة بأقواس
ميثود (method)"نص".upper()لا تنطبقبعد نقطة تلي الكائن

القاعدة العملية: الكلمة المحجوزة تُكتب وحدها كجزء من الجملة البرمجية، الدالة تُتبع بأقواس ()، والميثود تأتي بعد نقطة تلي متغيراً معيناً.

أوامر التحكم في التدفق

هنا يجتمع أكثر من كلمة محجوزة لبناء منطق البرنامج. المجموعة الأساسية:

  1. الشرط: if ثم elif (لشروط إضافية) ثم else (للحالة المتبقية).
  2. الحلقات: for للمرور على عناصر معروفة، وwhile للتكرار طالما تحقق شرط.
  3. التحكم داخل الحلقة: break للخروج فوراً، وcontinue لتخطي الدورة الحالية، وpass كعنصر نائب لا يفعل شيئاً.

مثال يجمعها:

for i in range(5):
    if i == 3:
        continue
    print(i)

سيطبع هذا الأرقام 0 و1 و2 و4، متخطياً الرقم 3.

كيف تكتشف أي أمر بنفسك دون حفظ

أفضل عادة يمكنك بناؤها كمبرمج هي الاعتماد على أدوات بايثون الذاتية بدل قوائم الحفظ:

  • help() — اكتب help(print) لتحصل على شرح رسمي لأي دالة.
  • dir() — يعرض كل ما يمكن فعله بكائن معيّن، مثل dir("نص").
  • keyword.kwlist — القائمة الكاملة للكلمات المحجوزة.

هذه الأدوات دقيقة دائماً لأنها تقرأ من إصدار بايثون المثبّت لديك، بعكس أي قائمة مكتوبة قد تتقادم مع كل إصدار جديد.

خطأ شائع يقع فيه المبتدئون

من أكثر الأخطاء ضرراً استخدام اسم دالة مدمجة كاسم متغير، مثل:

list = [1, 2, 3]

هذا السطر يعمل دون خطأ ظاهر، لكنه "يدفن" الدالة list() الأصلية، فإذا حاولت بعدها كتابة list("abc") ستحصل على خطأ محيّر. القاعدة: تجنّب أسماء مثل list وstr وsum وtype وinput كأسماء متغيرات، وفضّل بدائل واضحة مثل my_list أو numbers.

الأسئلة الشائعة

كم عدد أوامر بايثون بالضبط؟ لا يوجد رقم واحد لأن "الأوامر" ليست مصطلحاً رسمياً. الأدق: 35 كلمة محجوزة ثابتة، ونحو 70 دالة مدمجة تختلف قليلاً بين الإصدارات، وعدد لا نهائي من الدوال التي يمكنك أنت تعريفها.

هل تختلف الأوامر بين إصدارات بايثون؟ نعم بشكل طفيف. الكلمات المحجوزة نادراً ما تتغير، لكن الدوال المدمجة قد تُضاف أو تُعدّل. لهذا يُنصح بالاعتماد على keyword.kwlist وdir(__builtins__) بدل القوائم الجاهزة.

ما الفرق بين الأمر والدالة في بايثون؟ الكلمة المحجوزة جزء من قواعد اللغة نفسها ولا يمكن تغييرها، أما الدالة فهي قطعة كود قابلة للاستدعاء، سواء كانت مدمجة مثل print() أو معرّفة بواسطتك عبر def.

من أين أبدأ إذا كنت مبتدئاً تماماً؟ ابدأ بأربعة فقط: print() وinput() وif/else وfor، وطبّقها في برامج صغيرة. الإتقان يأتي من الاستخدام المتكرر لا من حفظ القوائم.