الدوال (Functions) في بايثون: تنظيم كودك وإعادة استخدامه بذكاء 🧩
مرحباً بك في عالم الدوال! تخيل أنك تريد تنفيذ مهمة معينة مراراً وتكراراً في برنامجك، مثل تحية المستخدم أو حساب مساحة شكل هندسي. بدلاً من كتابة نفس الكود في كل مرة، يمكنك إنشاء "دالة" تقوم بهذه المهمة وتستدعيها متى شئت. هذا هو جوهر الدوال: أجزاء من الكود معبأة معاً لأداء مهمة محددة، يمكن استدعاؤها بالاسم عندما نحتاجها.
📝 ما هي الدالة ولماذا نستخدمها؟
الدالة (Function) هي كتلة من الكود لها اسم محدد، تؤدي مهمة واحدة محددة. فكر فيها كآلة صغيرة تأخذ مدخلات (اختياري)، تقوم بعمل معين، وقد تعطيك مخرجات (اختياري أيضاً).
فوائد استخدام الدوال:
- تجنب التكرار (Don't Repeat Yourself - DRY): اكتب الكود مرة واحدة واستخدمه مرات عديدة.
- تنظيم البرنامج: تقسيم البرنامج الكبير إلى أجزاء صغيرة يسهل فهمها وقراءتها.
- سهولة الصيانة: إذا أردت تعديل المهمة، فأنت تعدل الدالة في مكان واحد فقط.
🔧 كيفية تعريف دالة جديدة (def)
لإنشاء دالة في بايثون، نستخدم الكلمة المفتاحية def متبوعة باسم الدالة وأقواس ()، ثم ننهي السطر بعلامة نقطتين :.
# تعريف دالة بسيطة اسمها 'greet'
def greet():
# الكود داخل الدالة (يُسمى body)
print("مرحباً! أهلاً وسهلاً بك.")
في المثال أعلاه:
def: الكلمة المفتاحية لتعريف الدالة.greet: اسم الدالة الذي سنستخدمه لاستدعائها لاحقاً.(): الأقواس (سنضع فيها المدخلات لاحقاً).:: تشير إلى بداية كتلة الكود الخاصة بالدالة.print(...): جملة الطباعة التي تشكل "الجسم" الرئيسي للدالة. لاحظ أن السطر الذي بهprintيكون مُزاحاً للأمام (مسافة بادئة)، وهذا شرط أساسي في بايثون لتحديد أن هذا الكود ينتمي للدالة.
🔊 كيفية استدعاء دالة (Function Call)
بعد تعريف الدالة، لا يتم تنفيذ الكود الموجود داخلها تلقائياً. يجب علينا "استدعاؤها". استدعاء الدالة يعني ببساطة كتابة اسمها متبوعاً بأقواس ().
# تعريف الدالة
def greet():
print("مرحباً! أهلاً وسهلاً بك.")
# استدعاء الدالة لتنفيذ الكود الموجود فيها
greet()
ماذا سيحدث عند تشغيل هذا الكود؟
سيتم طباعة الجملة: مرحباً! أهلاً وسهلاً بك. مرة واحدة. إذا قمت باستدعاء الدالة ثلاث مرات greet(), greet(), greet()، فسيتم طباعة الجملة ثلاث مرات.
📤 تمرير معلومات للدالة: المعاملات (Parameters) والوسائط (Arguments)
لجعل الدوال أكثر فائدة، يمكننا جعلها تقبل معلومات من الخارج. نستخدم المعاملات (Parameters) لهذا الغرض.
- المعامل (Parameter): هو متغير نضعه داخل الأقواس
()عند تعريف الدالة. إنه بمثابة "عنصر نائب" للبيانات التي ستدخل للدالة. - الوسيط (Argument): هي القيمة الفعلية التي نمررها للدالة عند استدعائها.
# تعريف دالة بمعامل (parameter) واحد اسمه 'name'
def greet(name):
print(f"مرحباً {name}! أهلاً وسهلاً بك.")
# استدعاء الدالة وتمرير وسيط (argument) لها، مثلاً "أحمد"
greet("أحمد")
# استدعاء الدالة مرة أخرى بوسيط مختلف
greet("سارة")
النتيجة:
مرحباً أحمد! أهلاً وسهلاً بك.
مرحباً سارة! أهلاً وسهلاً بك.
📥 الحصول على نتيجة من الدالة: جملة return
حتى الآن، كانت دوالنا تقوم بعمل (الطباعة) ولكنها لا تُرجع لنا قيمة نستطيع تخزينها أو استخدامها في حسابات لاحقة. لجعل الدالة تُرجع قيمة، نستخدم الكلمة المفتاحية return.
# تعريف دالة لجمع عددين وإرجاع النتيجة
def add_numbers(num1, num2): # تأخذ معاملين
result = num1 + num2
return result # إرجاع ناتج الجمع
# استدعاء الدالة وتخزين القيمة المُرجعة في متغير
sum_result = add_numbers(5, 3)
print(sum_result) # سيطبع: 8
# يمكنك استخدام القيمة المُرجعة مباشرة في تعبير آخر
print(add_numbers(10, 2) * 2) # سيطبع: 24
ملاحظة هامة: عندما تنفذ الدالة جملة return, تتوقف فوراً عن التنفيذ وترجع القيمة. أي كود بعد return لن ينفذ.
💡 مثال شامل: دالة بسيطة لحساب المساحة
لنجمع ما تعلمناه في مثال عملي. لننشئ دالة تحسب مساحة مستطيل.
# تعريف الدالة بمعاملين: الطول والعرض
def calculate_area(length, width):
area = length * width # حساب المساحة
return area # إرجاع قيمة المساحة
# استدعاء الدالة مع تمرير الأبعاد
room_area = calculate_area(6, 4)
print(f"مساحة الغرفة هي: {room_area} متر مربع") # سيطبع: مساحة الغرفة هي: 24 متر مربع
# استدعاء مباشر آخر
print(calculate_area(10, 5)) # سيطبع: 50
🎓 اختبر نفسك
التعليقات
شاركنا رأيك أو أسئلتك حول هذا المقال