ما معنى return في بايثون؟ الفرق عن print | أساسيات بايثون 14

أساسيات بايثون 14 شرح return في Functions والفرق بينها وبين print

تُستخدم return في بايثون لإرجاع قيمة من داخل الدالة إلى المكان الذي استدعاها. يمكن بعد ذلك تخزين هذه القيمة في متغير أو استخدامها في عملية أخرى. أما print() فتعرض قيمة على الشاشة، لكنها لا تجعلها ناتجًا للدالة يمكن الاستفادة منه لاحقًا.

def add(a, b):
    return a + b

result = add(5, 3)
print(result)

الناتج هو 8. هنا أعادت الدالة ناتج الجمع باستخدام return، ثم خزّناه في result. هذه هي الفكرة الأساسية التي تحتاجها لفهم معنى return في البرمجة داخل الدوال.

إذا كنت تسأل عن معنى return في البرمجة، ففكرتها العامة هي إعادة نتيجة من الدالة إلى الجزء الذي استدعاها ليستفيد منها لاحقًا.

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

{alertInfo} إذا لم تكن تعرف بعد كيف نعرّف الدوال ونستدعيها، راجع أولًا درس شرح Functions في بايثون للمبتدئين. هنا سنركز فقط على القيمة التي تعيدها الدالة باستخدام return.

ما معنى return في بايثون؟

تعني return أن الدالة تُنهي عملها في ذلك المسار وتعيد قيمة إلى الكود الذي استدعاها. لذلك يمكن أن تصبح نتيجة الدالة جزءًا من بقية البرنامج بدل أن تظهر على الشاشة فقط.

في المثال السابق:

result = add(5, 3)

استدعاء add(5, 3) أعاد القيمة 8، ولذلك أصبحت قيمة المتغير result هي 8.

دالة في Python تستخدم return لإرجاع ناتج جمع رقمين وتخزينه داخل متغير
{alertSuccess} القاعدة المختصرة: استخدم return عندما تريد من الدالة أن تعطي البرنامج قيمة يمكن تخزينها أو إعادة استخدامها.

ما الفرق بين return و print؟

الفرق الأساسي أن return تعيد قيمة من الدالة، بينما print() تعرض قيمة على الشاشة. عرض النتيجة ليس هو نفسه إرجاعها.

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

شاهد الفرق عمليًا. هذه الدالة تطبع الناتج فقط:

def add_print(a, b):
    print(a + b)

result = add_print(5, 3)
print(result)

الناتج:

8
None

ظهر 8 لأن الدالة طبعته، ثم ظهر None لأن الدالة لم تُرجع قيمة باستخدام return.

أما عند استخدام return:

def add_return(a, b):
    return a + b

result = add_return(5, 3)
print(result)

تصبح القيمة 8 محفوظة في result ويمكن استخدامها لاحقًا.

مقارنة بين print و return توضح أن الدالة بدون return ترجع None في Python

لماذا نستخدم return بدل الاكتفاء بالطباعة؟

الفائدة الحقيقية من return تظهر عندما نحتاج إلى استخدام ناتج الدالة في خطوة أخرى:

def calculate_total(price, quantity):
    return price * quantity

total = calculate_total(10, 3)
final_total = total + 5

print(final_total)

الناتج:

35

أعادت الدالة القيمة 30، ثم استخدمناها لإضافة 5. لو كانت الدالة تطبع 30 فقط، فلن تكون الطباعة نفسها قيمة يمكن جمعها بهذه الطريقة.

ماذا يحدث إذا لم نستخدم return؟

إذا انتهت الدالة في بايثون دون تنفيذ return بقيمة، فإنها ترجع None تلقائيًا.

def greet():
    message = "Hello"

result = greet()
print(result)

الناتج:

None

يكفي هنا أن تعرف أن None تعني عدم وجود قيمة معادة فعلية. إذا أردت فهمها بتفصيل أكبر، راجع درس شرح None في بايثون.

return توقف تنفيذ الدالة

عند تنفيذ return تنتهي الدالة في ذلك المسار، ولذلك لا يتم تنفيذ الأسطر التي تأتي بعدها في المسار نفسه.

def test():
    print("Before return")
    return "Done"
    print("After return")

result = test()
print(result)

الناتج:

Before return
Done

السطر الذي يطبع After return لا يعمل، لأن تنفيذ الدالة انتهى عند return.

مثال يوضح أن الكود بعد return داخل الدالة لا يتم تنفيذه في Python
{alertWarning} أي كود مهم تضعه بعد return في نفس المسار لن يتم تنفيذه.

استخدام return مع if

يمكن أن تحتوي الدالة على أكثر من return في مسارات مختلفة. عند تحقق أحد الشروط وتنفيذ return تنتهي الدالة وتعيد القيمة المناسبة.

def check_age(age):
    if age >= 18:
        return "Allowed"
    return "Not allowed"

print(check_age(20))
print(check_age(15))

الناتج:

Allowed
Not allowed

إذا احتجت مراجعة الشروط، يمكنك الرجوع إلى شرح if و else في بايثون.

هل يمكن إرجاع أكثر من قيمة؟

نعم. يمكن كتابة أكثر من قيمة بعد return مفصولة بفواصل:

def calculate(a, b):
    total = a + b
    difference = a - b
    return total, difference

sum_result, diff_result = calculate(10, 4)

print(sum_result)
print(diff_result)

الناتج:

14
6

تقنيًا، التعبير return total, difference يعيد قيمة من نوع tuple، ثم قمنا بفكها إلى متغيرين. يكفي هذا القدر في هذا الدرس لأن موضوعنا الأساسي هو كيفية إرجاع النتيجة من الدالة.

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

استخدام print بدل return

إذا كان هدفك استخدام ناتج الدالة في حساب أو تخزينه في متغير، فلا تستبدل return بـ print(). الطباعة تعرض النتيجة فقط.

نسيان return في أحد مسارات if

إذا كانت الدالة يفترض أن تعيد قيمة في كل الحالات، فتأكد أن كل مسار ممكن يعيد قيمة مناسبة. وإلا قد تنتهي بعض الحالات إلى None دون قصد.

كتابة كود مهم بعد return

أي سطر بعد return في المسار نفسه لن يُنفذ.

كتابة return خارج الدالة

تُستخدم return داخل الدوال. كتابتها خارج تعريف دالة يؤدي إلى خطأ نحوي.

أخطاء return الشائعة في Functions مثل استخدام print بدل return وكتابة كود بعد return

تمرين بسيط على return

اكتب دالة اسمها square تستقبل رقمًا وتعيد مربعه، ثم خزّن القيمة المعادة في متغير واطبعها.

def square(number):
    return number * number

result = square(6)
print(result)

الناتج:

36

أسئلة شائعة حول return

هل return تطبع النتيجة؟

لا. return تعيد قيمة من الدالة، وإذا أردت عرض هذه القيمة على الشاشة يمكنك تمريرها إلى print().

هل يمكن استخدام أكثر من return داخل الدالة؟

نعم. يمكن أن توجد أكثر من return في الدالة، مثلًا داخل مسارات شروط مختلفة، لكن تنفيذ أي واحدة منها ينهي استدعاء الدالة الحالي.

ماذا ترجع الدالة إذا لم نكتب return؟

إذا انتهت الدالة دون إرجاع قيمة، فإنها ترجع None. للتفاصيل المتعلقة بـ None ارجع إلى الدرس المتخصص المذكور أعلاه.

هل يعمل الكود بعد return؟

لا، ليس إذا كان بعد return في المسار نفسه؛ لأن return تنهي تنفيذ الدالة في ذلك المسار.

الخطوة التالية في كورس أساسيات بايثون

بعد أن فهمت كيف تعيد الدالة قيمة باستخدام return، انتقل إلى أساسيات بايثون 15: شرح Scope والمتغير المحلي والعام. يمكنك أيضًا الرجوع إلى صفحة كورس أساسيات بايثون لمتابعة الدروس بالترتيب.

الخلاصة

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

{alertSuccess} إذا احتجت النتيجة داخل بقية البرنامج فاستخدم return، وإذا كان هدفك عرضها للمستخدم فاستخدم print().

إرسال تعليق

أحدث أقدم