أساسيات بايثون 13: شرح Functions في Python للمبتدئين

أساسيات بايثون الدرس 13: شرح Functions في Python وتعريف الدوال باستخدام def للمبتدئين

مرحبًا بك في الدرس الثالث عشر من سلسلة أساسيات بايثون على موقع بايثون العرب.

في الدروس السابقة تعلمنا أشياء مهمة مثل القوائم، الشروط، والحلقات. واليوم ننتقل إلى مفهوم مهم جدًا في البرمجة وهو الدوال Functions في Python.

الدالة تساعدك على تنظيم الكود، وتجنب تكرار نفس الأوامر أكثر من مرة، وتجعل برنامجك أسهل في القراءة والتعديل.

{getToc} $title={محتوى المقال}

{alertInfo} الدالة Function هي مجموعة أوامر نكتبها مرة واحدة، ثم نستدعيها كلما احتجنا إليها.

قبل هذا الدرس، يفضل أن تكون قرأت:

صورة توضح فكرة Function في Python لتحويل الكود المكرر إلى دالة واحدة يتم استدعاؤها أكثر من مرة

ما هي Functions في Python؟

الدالة في بايثون هي جزء من الكود له اسم محدد، ويقوم بتنفيذ مهمة معينة.

بدل أن تكتب نفس الكود في أكثر من مكان، يمكنك وضعه داخل دالة، ثم تشغيل الدالة عند الحاجة.

مثلاً، بدل أن تكتب رسالة ترحيب أكثر من مرة:

print("Welcome to Python")

print("Welcome to Python")

print("Welcome to Python")

يمكنك إنشاء دالة تطبع الرسالة، ثم تستدعيها أكثر من مرة.

كيف ننشئ دالة في Python؟

لإنشاء دالة في بايثون نستخدم الكلمة المفتاحية def.

الشكل العام:

def function_name():

    # code here

مثال بسيط:

def say_hello():

    print("Hello Python")

say_hello()

الناتج:

Hello Python

لاحظ أننا عرّفنا الدالة أولًا باستخدام def، ثم شغلناها بكتابة اسمها مع الأقواس:

say_hello()
{alertSuccess} تعريف الدالة وحده لا يشغل الكود. يجب استدعاء الدالة حتى يتم تنفيذ الأوامر الموجودة بداخلها.

شرح أجزاء الدالة

لنأخذ هذا المثال:

def greet():

    print("Welcome")

يتكون من:

  • def: كلمة تستخدم لتعريف دالة جديدة.
  • greet: اسم الدالة.
  • (): أقواس الدالة.
  • :: نقطتان تعني أن جسم الدالة سيبدأ بعدها.
  • السطر المزاح للداخل: هو الكود الذي ينتمي للدالة.
{alertWarning} المسافات البادئة Indentation مهمة جدًا داخل الدوال. أي كود داخل الدالة يجب أن يكون مزاحًا للداخل.

راجع درس المسافات البادئة هنا: أساسيات بايثون 3: المسافات البادئة Indentation.

شرح أجزاء الدالة في Python مثل def واسم الدالة والأقواس والنقطتين والمسافات البادئة

لماذا نستخدم Functions؟

نستخدم الدوال لأنها تجعل الكود أكثر تنظيمًا وأسهل في الصيانة.

أهم فوائد Functions في Python:

  • تقليل تكرار الكود.
  • تنظيم البرنامج إلى أجزاء صغيرة.
  • تسهيل قراءة الكود وفهمه.
  • إعادة استخدام نفس الكود أكثر من مرة.
  • تسهيل تعديل البرنامج لاحقًا.

تخيل أن لديك برنامجًا يطبع خطًا فاصلًا في عدة أماكن:

print("----------------")

print("Student Report")

print("----------------")

بدل تكرار الخط، يمكننا إنشاء دالة:

def line():

    print("----------------")

line()

print("Student Report")

line()

هذا يجعل الكود أنظف، وإذا أردت تغيير شكل الخط لاحقًا ستعدله في مكان واحد فقط.

ما هي Parameters في الدوال؟

أحيانًا لا نريد أن تكون الدالة ثابتة دائمًا. نريد أن نرسل لها قيمة مختلفة كل مرة.

هنا نستخدم Parameters.

مثال:

def greet(name):

    print(f"Hello {name}")

greet("Ahmed")

greet("Sara")

الناتج:

Hello Ahmed

Hello Sara

في هذا المثال:

  • name هو Parameter داخل الدالة.
  • "Ahmed" و "Sara" هي القيم التي أرسلناها للدالة.

الفرق بين Parameter و Argument

قد تسمع كلمتين: Parameter و Argument.

المصطلح معناه ببساطة مثال
Parameter المتغير الذي تكتبه داخل تعريف الدالة def greet(name):
Argument القيمة التي ترسلها للدالة عند الاستدعاء greet("Ahmed")
{alertInfo} ببساطة: Parameter يظهر عند تعريف الدالة، و Argument يظهر عند استدعاء الدالة.

دالة تستقبل أكثر من قيمة

يمكن للدالة أن تستقبل أكثر من Parameter.

مثال:

def student_info(name, age):

    print(f"Name: {name}")

    print(f"Age: {age}")

student_info("Ali", 20)

الناتج:

Name: Ali

Age: 20

هنا الدالة تستقبل اسمًا وعمرًا، ثم تطبع البيانات.

الفرق بين Parameter و Argument في Python من خلال مثال greet name و greet Ahmed

ما هي return في Python؟

حتى الآن كانت الدوال تطبع النتائج باستخدام print().

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

هنا نستخدم return.

مثال:

def add(a, b):

    return a + b

result = add(5, 3)

print(result)

الناتج:

8

الدالة add لم تطبع النتيجة بنفسها، بل أعادت القيمة، ثم خزناها في المتغير result.

{alertSuccess} استخدم return عندما تريد أن تعيد الدالة قيمة يمكن تخزينها أو استخدامها في عملية أخرى.

الفرق بين print و return

من أكثر الأشياء التي تربك المبتدئين: ما الفرق بين print و return؟

الأمر وظيفته هل يمكن استخدام النتيجة لاحقًا؟
print() يعرض القيمة على الشاشة لا، هو فقط يطبع
return يرجع قيمة من الدالة نعم، يمكن تخزينها واستخدامها

مثال باستخدام print:

def add(a, b):

    print(a + b)

add(5, 3)

مثال باستخدام return:

def add(a, b):

    return a + b

total = add(5, 3)

print(total * 2)

الناتج:

16

استطعنا ضرب الناتج في 2 لأن الدالة أعادت قيمة باستخدام return.

{alertWarning} لا تخلط بين print و return. الطباعة تعرض النتيجة فقط، أما return فتعيد القيمة لاستخدامها داخل البرنامج.

دالة لفحص الرقم الزوجي والفردي

لنأخذ مثالًا عمليًا من الدروس السابقة.

سننشئ دالة تفحص هل الرقم زوجي أم فردي:

def check_even_odd(number):

    if number % 2 == 0:

        return "Even"

    else:

        return "Odd"

print(check_even_odd(10))

print(check_even_odd(7))

الناتج:

Even

Odd

هذا مثال ممتاز يربط بين الدوال والشروط.

راجع درس الرقم الزوجي والفردي: بايثون بالمثال: معرفة الرقم الزوجي والفردي في Python.

القيم الافتراضية في الدوال Default Parameters

يمكنك إعطاء Parameter قيمة افتراضية.

مثال:

def greet(name="Guest"):

    print(f"Hello {name}")

greet()

greet("Mona")

الناتج:

Hello Guest

Hello Mona

عندما لم نرسل اسمًا، استخدمت الدالة القيمة الافتراضية Guest.

أسماء الدوال الجيدة

اسم الدالة يجب أن يكون واضحًا ويدل على مهمتها.

أمثلة جيدة:

calculate_total()

check_password()

print_report()

count_words()

أمثلة غير واضحة:

x()

do()

test()

abc()
{alertInfo} اجعل اسم الدالة يشرح وظيفتها. هذا يجعل الكود أسهل لك ولأي شخص يقرأه بعدك.

أخطاء شائعة عند استخدام Functions

الخطأ الأول: نسيان استدعاء الدالة

هذا الكود لا يطبع شيئًا:

def hello():

    print("Hello")

لأننا عرّفنا الدالة فقط، ولم نستدعها.

الصحيح:

def hello():

    print("Hello")

hello()

الخطأ الثاني: نسيان النقطتين

هذا خطأ:

def hello()

    print("Hello")

الصحيح:

def hello():

    print("Hello")

الخطأ الثالث: مشكلة المسافات البادئة

هذا خطأ:

def hello():

print("Hello")

الصحيح:

def hello():

    print("Hello")

الخطأ الرابع: تمرير عدد Arguments غير صحيح

إذا كانت الدالة تنتظر قيمة واحدة، يجب أن ترسل لها قيمة واحدة.

def greet(name):

    print(f"Hello {name}")

greet()

هذا يسبب خطأ لأن الدالة تحتاج إلى name.

الصحيح:

greet("Ahmed")
ملخص أخطاء Functions في Python مثل نسيان استدعاء الدالة أو النقطتين أو المسافات البادئة أو عدد Arguments

مثال تطبيقي: دالة لحساب عدد الكلمات

سنأخذ مثالًا عمليًا من سلسلة بايثون بالمثال.

نريد إنشاء دالة تستقبل نصًا، ثم ترجع عدد الكلمات داخله.

def count_words(text):

    words = text.split()

    return len(words)

sentence = "I love Python programming"

result = count_words(sentence)

print(result)

الناتج:

4

هنا أنشأنا دالة قابلة لإعادة الاستخدام. بدل أن نكتب كود حساب الكلمات كل مرة، نستخدم:

count_words(text)

يمكنك قراءة الدرس الكامل هنا: بايثون بالمثال 3: حساب عدد الكلمات في نص باستخدام Python.

متى أستخدم Function؟

استخدم الدالة عندما:

  • تجد نفسك تكرر نفس الكود أكثر من مرة.
  • تريد تقسيم البرنامج إلى أجزاء واضحة.
  • تريد كتابة كود قابل لإعادة الاستخدام.
  • تريد جعل البرنامج أسهل في التعديل.
{alertSuccess} كلما كبر برنامجك، أصبحت الدوال أهم لأنها تساعدك على تنظيم الكود بدل تركه كسطور كثيرة متداخلة.

روابط مفيدة

لفهم الشروط المستخدمة داخل الدوال: أساسيات بايثون 11: شرح if و else في Python.

ولفهم الحلقات قبل استخدامها مع الدوال: أساسيات بايثون 12: شرح Loops في Python.

ولقراءة مثال عملي مرتبط بالدوال: حساب عدد الكلمات في نص باستخدام Python.

ويمكنك الرجوع إلى توثيق بايثون الرسمي: Python Functions Documentation.

مقالات مقترحة من بايثون العرب

خلاصة الدرس

في هذا الدرس تعلمنا شرح Functions في Python للمبتدئين.

عرفنا أن الدالة هي جزء من الكود له اسم، ويمكن تشغيله عند الحاجة.

الشكل الأساسي لتعريف دالة هو:

def function_name():

    # code here

وتعلمنا استخدام Parameters:

def greet(name):

    print(f"Hello {name}")

وتعلمنا استخدام return لإرجاع القيم:

def add(a, b):

    return a + b

الدوال من أهم أساسيات بايثون، وستحتاجها كثيرًا عندما تبدأ بكتابة برامج ومشاريع أكبر.

تمرين بسيط لك

اكتب دالة اسمها multiply تستقبل رقمين، ثم ترجع حاصل ضربهما.

مثال النتيجة المطلوبة:

print(multiply(4, 5))

الناتج المتوقع:

20

إرسال تعليق

أحدث أقدم