التعليقات في بايثون (Python Comments)

التعليقات (Comments) هي أحد أهم الأدوات التي يجب على كل مبرمج إتقانها، سواء كان مبتدئاً أو محترفاً. التعليقات هي نصوص توضيحية تكتبها داخل الكود البرمجي لشرح ما يفعله الكود، لكن المفسر يتجاهلها تماماً ولا ينفذها. قد تتساءل: لماذا أكتب شيئاً لن يُنفذ؟ الإجابة بسيطة: التعليقات ليست للحاسوب، بل للبشر! هي لك أنت عندما تعود لقراءة الكود بعد أسابيع أو شهور، ولزملائك المبرمجين الذين قد يعملون على نفس المشروع. في هذا الدرس الشامل، سنتعلم كل شيء عن التعليقات في بايثون: كيفية كتابتها، أنواعها المختلفة، متى نستخدمها، وأفضل الممارسات لكتابة تعليقات احترافية ومفيدة.

1. ما هي التعليقات ولماذا نحتاجها؟

التعليق (Comment) هو سطر أو عدة أسطر من النص داخل الكود البرمجي تبدأ برمز خاص يخبر المفسر أن يتجاهل هذا النص تماماً. عندما يقرأ مفسر بايثون الكود، يتخطى التعليقات كأنها غير موجودة، ولا تؤثر على تنفيذ البرنامج أبداً. التعليقات موجهة للمبرمجين البشر فقط، وليس للحاسوب.

لكن لماذا نحتاج للتعليقات؟ هناك عدة أسباب مهمة جداً:

  • التوضيح والشرح: الكود الجيد يجب أن يكون واضحاً بذاته، لكن أحياناً تحتاج لشرح "لماذا" كتبت الكود بطريقة معينة، وليس فقط "ماذا" يفعل.
  • التذكير المستقبلي: عندما تعود لقراءة كودك بعد شهر أو سنة، قد لا تتذكر لماذا كتبت جزءاً معيناً بطريقة محددة. التعليقات تساعدك على فهم تفكيرك السابق.
  • التعاون مع الآخرين: إذا كنت تعمل في فريق، التعليقات تساعد زملاءك على فهم كودك بسرعة دون الحاجة لسؤالك عن كل تفصيل.
  • تعطيل الكود مؤقتاً: أثناء التطوير والاختبار، قد تريد تعطيل جزء من الكود مؤقتاً دون حذفه. التعليقات تسمح لك بذلك.
  • التوثيق: التعليقات الخاصة (Docstrings) تُستخدم لتوثيق الدوال والفئات بطريقة رسمية يمكن استخراجها تلقائياً.

2. التعليقات أحادية السطر (Single-Line Comments)

التعليق أحادي السطر هو أبسط نوع من التعليقات في بايثون. يبدأ برمز الشباك # (Hash أو Pound Sign)، وكل شيء بعد هذا الرمز في نفس السطر يُعتبر تعليقاً ويتم تجاهله. يمكنك وضع التعليق في سطر مستقل، أو في نهاية سطر يحتوي على كود.

single_line_comments.py
# هذا تعليق في سطر مستقل
# المفسر سيتجاهل هذا السطر تماماً

print("Hello World")  # هذا تعليق في نهاية سطر كود

# يمكنك كتابة عدة تعليقات متتالية
# كل سطر يبدأ بـ #
# لشرح فكرة معقدة

x = 10  # تخزين الرقم 10 في المتغير x
y = 20  # تخزين الرقم 20 في المتغير y
result = x + y  # جمع x و y وحفظ النتيجة
print(result)  # طباعة النتيجة
النتيجة
Hello World 30

لاحظ أن التعليقات لم تظهر في النتيجة على الإطلاق. المفسر تجاهلها تماماً ونفذ فقط الأسطر البرمجية الفعلية.

قواعد كتابة التعليقات أحادية السطر
  • ابدأ التعليق برمز #
  • ضع مسافة واحدة بعد # قبل بداية النص (للوضوح)
  • إذا كان التعليق في نهاية سطر كود، ضع مسافتين على الأقل قبل #
  • اكتب التعليقات بلغة واضحة ومفهومة
comment_styles.py
# ✅ جيد: مسافة بعد #
#❌ سيء: لا مسافة بعد #

x = 5  # ✅ جيد: مسافتان قبل #
y = 10# ❌ سيء: لا مسافة قبل #

# ✅ جيد: تعليق واضح ومفيد
# نحسب مساحة المستطيل بضرب الطول في العرض
area = length * width

# ❌ سيء: تعليق واضح من الكود نفسه (غير ضروري)
x = 5  # تعيين 5 للمتغير x

3. التعليقات متعددة الأسطر (Multi-Line Comments)

بايثون لا تمتلك صيغة رسمية خاصة للتعليقات متعددة الأسطر (على عكس لغات مثل C++ التي تستخدم /* */). بدلاً من ذلك، هناك طريقتان لكتابة تعليقات متعددة الأسطر:

الطريقة الأولى: استخدام # في كل سطر

الطريقة الأكثر شيوعاً هي ببساطة استخدام # في بداية كل سطر:

multi_line_hash.py
# هذا برنامج لحساب مساحة الدائرة
# يطلب من المستخدم إدخال نصف القطر
# ثم يحسب المساحة باستخدام الصيغة: π × r²
# ويعرض النتيجة بدقة منزلتين عشريتين

import math

radius = float(input("أدخل نصف القطر: "))
area = math.pi * radius ** 2
print(f"مساحة الدائرة: {area:.2f}")
الطريقة الثانية: استخدام النصوص الثلاثية (Triple Quotes)

يمكنك استخدام ثلاث علامات تنصيص مزدوجة """ أو مفردة ''' لإنشاء نص متعدد الأسطر. تقنياً، هذا ليس تعليقاً بل نص (String)، لكن إذا لم يُسند لمتغير، فإن بايثون تتجاهله، فيعمل كتعليق:

multi_line_quotes.py
"""
هذا تعليق متعدد الأسطر باستخدام النصوص الثلاثية.
يمكنك كتابة عدة أسطر دون الحاجة لوضع # في كل سطر.
هذه الطريقة مفيدة للتعليقات الطويلة أو التوثيق.
"""

print("البرنامج يعمل")

'''
يمكنك أيضاً استخدام علامات التنصيص المفردة الثلاثية.
النتيجة نفسها تماماً.
اختر الطريقة التي تفضلها.
'''

print("انتهى البرنامج")
النتيجة
البرنامج يعمل انتهى البرنامج

ملاحظة مهمة: استخدام النصوص الثلاثية كتعليقات غير محبذ في معظم الحالات. الطريقة المفضلة هي استخدام # في كل سطر. النصوص الثلاثية يجب أن تُستخدم فقط للـ Docstrings (سنشرحها لاحقاً).

4. سلاسل التوثيق (Docstrings)

Docstring (اختصار لـ Documentation String) هي نوع خاص من التعليقات تُستخدم لتوثيق الدوال، الفئات، والوحدات البرمجية بطريقة رسمية. Docstrings تُكتب باستخدام النصوص الثلاثية """ وتوضع مباشرة بعد تعريف الدالة أو الفئة. الفرق بين Docstring والتعليق العادي هو أن Docstring يمكن الوصول إليها برمجياً باستخدام الخاصية __doc__.

docstrings_example.py
def calculate_area(length, width):
    """
    تحسب مساحة المستطيل.
    
    المعطيات:
        length (float): طول المستطيل
        width (float): عرض المستطيل
    
    القيمة المرجعة:
        float: مساحة المستطيل (طول × عرض)
    
    مثال:
        >>> calculate_area(5, 3)
        15
    """
    return length * width

# استخدام الدالة
result = calculate_area(10, 5)
print(f"المساحة: {result}")

# الوصول إلى الـ Docstring
print("\nتوثيق الدالة:")
print(calculate_area.__doc__)
النتيجة
المساحة: 50 توثيق الدالة: تحسب مساحة المستطيل. المعطيات: length (float): طول المستطيل width (float): عرض المستطيل القيمة المرجعة: float: مساحة المستطيل (طول × عرض) مثال: >>> calculate_area(5, 3) 15
أنواع Docstrings
  • Docstring أحادي السطر: للدوال البسيطة جداً
  • Docstring متعدد الأسطر: للدوال والفئات المعقدة (الأكثر شيوعاً)
docstring_types.py
# Docstring أحادي السطر (للدوال البسيطة)
def greet(name):
    """تطبع رسالة ترحيب بالاسم المعطى."""
    print(f"مرحباً {name}!")

# Docstring متعدد الأسطر (للدوال المعقدة)
def calculate_bmi(weight, height):
    """
    تحسب مؤشر كتلة الجسم (BMI).
    
    مؤشر كتلة الجسم يُحسب بقسمة الوزن (بالكيلوغرام)
    على مربع الطول (بالمتر).
    
    المعطيات:
        weight (float): الوزن بالكيلوغرام
        height (float): الطول بالمتر
    
    القيمة المرجعة:
        float: مؤشر كتلة الجسم
    
    استثناءات:
        ValueError: إذا كان الطول صفراً أو سالباً
    """
    if height <= 0:
        raise ValueError("الطول يجب أن يكون أكبر من صفر")
    
    return weight / (height ** 2)

# استخدام الدوال
greet("أحمد")
bmi = calculate_bmi(70, 1.75)
print(f"مؤشر كتلة الجسم: {bmi:.2f}")

5. تعطيل الكود مؤقتاً (Commenting Out Code)

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

commenting_out.py
print("هذا السطر سيُنفذ")

# print("هذا السطر معطّل مؤقتاً")
# print("وهذا أيضاً معطّل")

print("هذا السطر سيُنفذ أيضاً")

# أحياناً تريد تجربة طريقتين مختلفتين
# الطريقة القديمة (معطّلة):
# result = x * 2 + 5

# الطريقة الجديدة (نشطة):
result = (x + 1) * 2

print(result)

نصيحة: معظم محررات النصوص الحديثة (مثل VS Code) توفر اختصاراً لتعليق/إلغاء تعليق عدة أسطر دفعة واحدة. عادة يكون Ctrl + / في ويندوز/لينكس أو Cmd + / في Mac.

6. أفضل الممارسات في كتابة التعليقات

✅ ما يجب فعله
  • اشرح "لماذا" وليس "ماذا": الكود الجيد يوضح ماذا يفعل، لكن التعليقات يجب أن توضح لماذا كُتب بهذه الطريقة.
  • حدّث التعليقات: عندما تعدل الكود، حدّث التعليقات المرتبطة به. تعليق قديم خاطئ أسوأ من عدم وجود تعليق.
  • كن واضحاً ومختصراً: اكتب تعليقات واضحة ومباشرة دون إطالة غير ضرورية.
  • استخدم لغة مفهومة: اكتب بلغة واضحة يفهمها أي مبرمج، حتى لو كان مبتدئاً.
  • وثّق الأجزاء المعقدة: إذا كان جزء من الكود معقداً أو غير واضح، اشرحه بتعليق مفصل.
❌ ما يجب تجنبه
  • لا تشرح الواضح: تجنب التعليقات التي تكرر ما يقوله الكود بوضوح.
  • لا تترك تعليقات قديمة: احذف أو حدّث التعليقات التي لم تعد صحيحة.
  • لا تعلّق كل سطر: ليس كل سطر يحتاج تعليقاً. علّق فقط ما يحتاج توضيحاً.
  • لا تستخدم تعليقات مضللة: تأكد أن التعليق يصف الكود بدقة.
good_vs_bad_comments.py
# ❌ تعليق سيء: يكرر ما يقوله الكود
x = 5  # تعيين 5 للمتغير x

# ✅ تعليق جيد: يشرح السبب
x = 5  # نستخدم 5 كقيمة افتراضية حسب متطلبات العميل

# ❌ تعليق سيء: واضح من الكود
# طباعة رسالة ترحيب
print("مرحباً")

# ✅ تعليق جيد: يشرح سياق غير واضح
# نطبع الرسالة بالعربية لأن المستخدمين المستهدفين عرب
print("مرحباً")

# ❌ تعليق سيء: مضلل (الكود يجمع لكن التعليق يقول يطرح)
result = a + b  # طرح a من b

# ✅ تعليق جيد: دقيق ومفيد
# نجمع الضريبة (15%) إلى السعر الأساسي
total = price + (price * 0.15)

7. مثال شامل: برنامج موثق بشكل احترافي

لنرى مثالاً على برنامج كامل يستخدم التعليقات بطريقة احترافية:

temperature_converter.py
"""
برنامج تحويل درجات الحرارة
================================
يحول درجات الحرارة بين مقياس سيلسيوس وفهرنهايت.

المؤلف: أحمد محمد
التاريخ: 2026-01-21
الإصدار: 1.0
"""

def celsius_to_fahrenheit(celsius):
    """
    تحول درجة الحرارة من سيلسيوس إلى فهرنهايت.
    
    الصيغة المستخدمة: F = (C × 9/5) + 32
    
    المعطيات:
        celsius (float): درجة الحرارة بالسيلسيوس
    
    القيمة المرجعة:
        float: درجة الحرارة بالفهرنهايت
    """
    # نستخدم 9/5 بدلاً من 1.8 لوضوح الصيغة الرياضية
    return (celsius * 9/5) + 32


def fahrenheit_to_celsius(fahrenheit):
    """
    تحول درجة الحرارة من فهرنهايت إلى سيلسيوس.
    
    الصيغة المستخدمة: C = (F - 32) × 5/9
    
    المعطيات:
        fahrenheit (float): درجة الحرارة بالفهرنهايت
    
    القيمة المرجعة:
        float: درجة الحرارة بالسيلسيوس
    """
    return (fahrenheit - 32) * 5/9


# البرنامج الرئيسي
print("=" * 50)
print("      برنامج تحويل درجات الحرارة")
print("=" * 50)
print()

# عرض الخيارات للمستخدم
print("اختر نوع التحويل:")
print("1. من سيلسيوس إلى فهرنهايت")
print("2. من فهرنهايت إلى سيلسيوس")
print()

# الحصول على اختيار المستخدم
# نستخدم try-except لاحقاً للتعامل مع الإدخال الخاطئ
choice = input("أدخل اختيارك (1 أو 2): ")

if choice == "1":
    # تحويل من سيلسيوس إلى فهرنهايت
    celsius = float(input("أدخل درجة الحرارة بالسيلسيوس: "))
    fahrenheit = celsius_to_fahrenheit(celsius)
    
    # عرض النتيجة بدقة منزلة عشرية واحدة
    print(f"{celsius}°C = {fahrenheit:.1f}°F")
    
elif choice == "2":
    # تحويل من فهرنهايت إلى سيلسيوس
    fahrenheit = float(input("أدخل درجة الحرارة بالفهرنهايت: "))
    celsius = fahrenheit_to_celsius(fahrenheit)
    
    print(f"{fahrenheit}°F = {celsius:.1f}°C")
    
else:
    # المستخدم أدخل خياراً غير صحيح
    print("خيار غير صحيح! الرجاء اختيار 1 أو 2")

print()
print("=" * 50)
print("      شكراً لاستخدام البرنامج!")
print("=" * 50)
💡 نصيحة ذهبية

اكتب التعليقات كأنك تشرح الكود لنفسك بعد ستة أشهر من الآن، عندما تكون قد نسيت تماماً لماذا كتبته بهذه الطريقة. هذا هو المعيار الحقيقي للتعليق الجيد.

تذكر: "الكود يُكتب مرة واحدة، لكنه يُقرأ مئات المرات." التعليقات الجيدة تجعل قراءة الكود وفهمه أسهل بكثير، وتوفر وقتاً ثميناً لك وللآخرين.

الخطوة التالية

الآن بعد أن تعلمت كيفية توثيق الكود، حان وقت تعلم المتغيرات - أساس تخزين البيانات

الدرس التالي: المتغيرات في Python
المحرر الذكي

اكتب الكود وشاهد النتيجة فوراً

جرب الآن مجاناً
قناة ديف عربي

تابع أحدث الدروس والتحديثات مباشرة على واتساب

انضم الآن