## الدوال (Functions)
الدالة هي كتلة من الكود قابلة للإعادة الاستخدام يمكن تسميتها واستدعاؤها.
### لماذا الدوال؟ - **إعادة الاستخدام:** اكتب مرة واستخدم مرات - **التنظيم:** تقسيم الكود إلى أجزاء واضحة - **الصيانة:** تعديل مكان واحد يؤثر في كل مكان - **الاختبار:** كل دالة يمكن اختبارها منفردة
### الصيغة: ```python def function_name(parameters): """Docstring اختياري""" # الكود return value # اختياري ```
| 1 | # تعريف دالة |
| 2 | def greet(name): |
| 3 | """تُرحّب بشخص باسمه""" |
| 4 | return f"مرحباً يا {name}!" |
| 5 | |
| 6 | # استدعاء الدالة |
| 7 | message = greet("أحمد") |
| 8 | print(message) # مرحباً يا أحمد! |
| 9 | |
| 10 | # دالة بدون return |
| 11 | def print_line(): |
| 12 | print("-" * 30) |
| 13 | |
| 14 | print_line() |
مثال 1: دوال بسيطة
| 1 | def add(a, b): |
| 2 | return a + b |
| 3 | |
| 4 | def is_even(n): |
| 5 | return n % 2 == 0 |
| 6 | |
| 7 | def get_full_name(first, last): |
| 8 | return f"{first} {last}" |
| 9 | |
| 10 | # استخدام |
| 11 | print(add(3, 7)) # 10 |
| 12 | print(is_even(8)) # True |
| 13 | print(get_full_name("أحمد", "محمد")) # أحمد محمد |
مثال 2: دالة حاسبة درجات
| 1 | def calculate_grade(score): |
| 2 | """تحول الدرجة إلى تقدير""" |
| 3 | if score >= 90: |
| 4 | return "A - ممتاز" |
| 5 | elif score >= 80: |
| 6 | return "B - جيد جداً" |
| 7 | elif score >= 70: |
| 8 | return "C - جيد" |
| 9 | elif score >= 60: |
| 10 | return "D - مقبول" |
| 11 | else: |
| 12 | return "F - راسب" |
| 13 | |
| 14 | # اختبار |
| 15 | scores = [95, 82, 67, 55] |
| 16 | for score in scores: |
| 17 | print(f"{score}: {calculate_grade(score)}") |