الدرس السادس : شرح Functions في Python بأسلوب مبسط مع أمثلة عملية
الدوال (Functions) في بايثون: شرح احترافي للمبتدئين والمتوسطين
في هذا الدرس ستتعلم معنى الدوال في بايثون، وكيف تكتب دالة باستخدام def، وتمرير المعاملات (Parameters)، واستخدام return لإرجاع قيم، مع أمثلة وتمارين عملية.
1) ما هي الدوال؟ ولماذا نستخدمها؟
الدالة (Function) هي مجموعة أوامر نكتبها مرة واحدة، ثم نستعملها كلما احتجنا. بدل تكرار نفس الكود في عدة أماكن، نجمعه داخل دالة ونستدعيها عند الحاجة.
الفائدة الأساسية: تنظيم الكود + تقليل التكرار + تسهيل الصيانة والتطوير.
مثال سريع (بدون دالة) ❌
print("مرحبا بك")
print("مرحبا بك")
print("مرحبا بك")نفس الفكرة باستخدام دالة ✅
def greet():
print("مرحبا بك")
greet()
greet()
greet()2) إنشاء دالة باستخدام def
في بايثون نستخدم الكلمة def لتعريف الدالة. ولاحظ أن المسافة البادئة (Indentation) مهمة جدًا لأن بايثون تعتمد عليها لتحديد جسم الدالة.
def اسم_الدالة():
# جسم الدالة
# أوامر تُنفذ عند الاستدعاءتنبيه مهم: تعريف الدالة وحده لا يشغلها. يجب استدعاؤها مثل: اسم_الدالة()
مثال عملي
def welcome():
print("أهلا! أنت تتعلم بايثون خطوة بخطوة")
welcome()3) المعاملات (Parameters) والوسائط (Arguments)
أحيانًا نريد للدالة أن تعمل حسب بيانات مختلفة (اسم شخص، رقمين، …). هنا نستعمل المعاملات داخل التعريف، ونمرّر الوسائط عند الاستدعاء.
| المفهوم | المعنى | مثال |
|---|---|---|
| Parameters | متغيرات داخل تعريف الدالة | def greet(name): |
| Arguments | القيم التي نرسلها عند الاستدعاء | greet("أحمد") |
مثال: دالة ترحّب بالاسم
def greet(name):
print("مرحبا", name)
greet("أحمد")
greet("سارة")مثال: دالة تجمع رقمين
def add(a, b):
print(a + b)
add(5, 3)
add(10, 7)4) الفرق بين print و return (مهم جدًا)
print تعرض النتيجة على الشاشة فقط، أما return فهي ترجع قيمة يمكن تخزينها واستعمالها لاحقًا.
مثال باستخدام return
def add(a, b):
return a + b
result = add(5, 3)
print("النتيجة:", result)قاعدة ذهبية: إذا كنت تحتاج النتيجة لاحقًا داخل برنامجك، استخدم return بدل print.
ماذا يحدث إذا لم نستخدم return؟
def test():
print(5)
x = test()
print(x) # ستطبع None5) معاملات افتراضية وقيم متعددة
يمكننا إعطاء قيمة افتراضية لمعامل، بحيث إذا لم يرسل المستخدم شيئًا تستعمل الدالة القيمة الافتراضية.
def greet(name="صديقي"):
print("مرحبا", name)
greet()
greet("ياسين")إرجاع أكثر من قيمة
بايثون تسمح بإرجاع عدة قيم مرة واحدة (تُعاد في شكل tuple).
def stats(a, b):
s = a + b
m = (a + b) / 2
return s, m
total, avg = stats(10, 20)
print(total, avg)6) نطاق المتغيرات: Local و Global
المتغير داخل الدالة يسمى محلي (Local) ولا يمكن استعماله خارج الدالة. أما المتغير خارج الدالة فهو عام (Global).
def demo():
x = 10 # local
print(x)
demo()
# print(x) # خطأ: x غير معروف خارج الدالةنصيحة: حاول دائمًا استخدام متغيرات محلية داخل الدوال لتجنب تعارض الأسماء ومشاكل التتبع.
7) مشروع صغير تطبيقي (مفيد للزيارة والبحث)
لنصنع برنامجًا بسيطًا: حاسبة مساحة الأشكال باستخدام دوال متعددة. هذا النوع من الأمثلة يجذب البحث لأن المستخدمين يبحثون عن “حاسبة مساحة” و”مشروع بايثون بسيط”.
def rectangle_area(length, width):
return length * width
def circle_area(radius):
pi = 3.14159
return pi * radius * radius
print("مساحة المستطيل:", rectangle_area(5, 4))
print("مساحة الدائرة:", circle_area(3))تطوير سريع: يمكنك لاحقًا إضافة إدخال من المستخدم باستخدام input() لتصبح “أداة” كاملة.
8) تمارين (مع حلول مختصرة)
⭐ تمرين 1: أنشئ دالة تطبع: "أنا أتعلم بايثون"
def say():
print("أنا أتعلم بايثون")
say()⭐ تمرين 2: دالة تستقبل رقمًا وتُرجع مربعه
def square(n):
return n * n
print(square(6))⭐ تمرين 3: دالة تستقبل رقمين وتُرجع الأكبر
def max2(a, b):
if a > b:
return a
return b
print(max2(10, 7))⭐ تمرين 4 (متوسط): دالة تتحقق هل العدد زوجي أم فردي
def is_even(n):
return n % 2 == 0
print(is_even(8)) # True
print(is_even(9)) # False9) أسئلة شائعة (FAQ)
لماذا تظهر لي IndentationError؟
لأنك لم تضع مسافة بادئة صحيحة داخل الدالة. في بايثون يجب أن يكون جسم الدالة مزاحًا (عادة 4 مسافات).
هل يمكنني استدعاء دالة قبل تعريفها؟
لا. في بايثون يجب تعريف الدالة أولًا ثم استدعاؤها بعد ذلك داخل نفس الملف.
متى أستخدم return ومتى أستخدم print؟
استخدم return عندما تريد نتيجة تُستعمل لاحقًا، واستخدم print عندما تريد فقط عرض شيء للمستخدم.
تعليقات
إرسال تعليق
نرحب بتعليقاتكم البناءة، ونسعى لردود تفاعلية ومفيدة للجميع.