☰ Year plan · Communication Technology (Arabic)

الدوال

Week 8 · Unit 1, Lesson 4 Functions with Parameters in Python · 3 lessons
3

إرجاع الناتج بـ return

ICT Prep 3 Term 1, Unit 1, Lesson 4: pp. 44–52
الهدفأُرجع قيمة بـ ⁦return⁩ وأفرق بين ⁦return⁩ و⁦print⁩ وأعرف أن المتغيرات المحلية تعيش داخل الدالة.
كلمات جديدة
⁦return⁩ · ترسل قيمة إلى المكان الذي استدعى الدالة⁦None⁩ · قيمة الدالة التي لا ترجع شيئًاالمتغير المحلي (⁦local⁩ ⁦variable⁩) · متغير يوجد داخل دالته فقط⁦NameError⁩ · تظهر حين يكون الاسم غير معروف
الشرح

تعرض ⁦print⁩ قيمة على الشاشة. أما ⁦return⁩ فتسلّم القيمة إلى مكان الاستدعاء ليخزنها البرنامج أو يستخدمها مرة أخرى. ادرس الدالة ⁦circle_area⁩. لها معامل ⁦radius⁩ ومتغير محلي ⁦pi⁩ والسطر ⁦return pi * radius * radius⁩. الاستدعاء ⁦circle_area(5)⁩ يعطي ⁦78.5⁩ ويخزنه ⁦result⁩. والعدد ⁦3.14⁩ تقريب فقط للعدد ⁦pi⁩ فالإجابات تقريبية أيضًا. أما الدالة التي تطبع فقط فتعيد ⁦None⁩، ولذلك يخزن السطر ⁦result = add_print(2, 3)⁩ القيمة ⁦None⁩. والدالة التي فيها ⁦return⁩ تعطي قيمة حقيقية: وهكذا ينجح ⁦result * 2⁩. والاسمان ⁦pi⁩ و⁦radius⁩ يعيشان داخل الدالة فقط. وخارجها يسبب ⁦print(pi)⁩ خطأ ⁦NameError⁩.

Python
1def circle_area(radius):
2    pi = 3.14
3    return pi * radius * radius
4
5result = circle_area(5)
6print(result)
7print(circle_area(10))
Output
78.5
314.0
أمثلة محلولة
Python
1def add_print(a, b):
2    print(a + b)
3
4def add_return(a, b):
5    return a + b
6
7result = add_print(2, 3)
8print(result)
9result = add_return(2, 3)
10print(result * 2)
Output
5
None
10
قارن بين دالتين. ⁦add_print⁩ تطبع فقط فيحمل المتغير ⁦result⁩ القيمة ⁦None⁩. أما ⁦add_return⁩ فتسلّم القيمة فتكون ⁦result⁩ تساوي ⁦5⁩ و⁦result * 2⁩ تساوي ⁦10⁩.
Python
1def triangle_area(base, height):
2    return 0.5 * base * height
3
4print(triangle_area(6, 4))
Output
12.0
قانون جديد مع ⁦return⁩: مساحة المثلث نصف القاعدة في الارتفاع. وبقاعدة ⁦6⁩ وارتفاع ⁦4⁩ تعطي الدالة ⁦12.0⁩ لأن ⁦0.5⁩ يجعل الناتج عشريًا.
Python
1def circle_area(radius):
2    pi = 3.14
3    return pi * radius * radius
4
5print(pi)
Output
NameError: pi exists only inside the function
الأسماء داخل الدالة محلية. أُنشئ ⁦pi⁩ داخل ⁦circle_area⁩ ولذلك لا تعرفه بايثون خارجها وتتوقف بخطأ ⁦NameError⁩.
نشاط الفصل

اكتب دالة ⁦celsius_to_f(c)⁩ ترجع ⁦c * 9 / 5 + 32⁩. احسب باليد النتيجة مع ⁦25⁩ ومع ⁦100⁩. ثم اكتب السطر الذي يخزن نتيجة ⁦25⁩ في متغير اسمه ⁦warm⁩.

تدرّب
1
ماذا تعطي ⁦circle_area(10)⁩ مع ⁦pi = 3.14⁩؟
Python
1def circle_area(radius):
2    pi = 3.14
3    return pi * radius * radius
4
5result = circle_area(5)
6print(result)
7print(circle_area(10))
2
ما الفرق بين ⁦print⁩ و⁦return⁩؟
3
ماذا يحمل ⁦result⁩ بعد ⁦result = add_print(2, 3)⁩؟
4
لماذا ⁦pi = 3.14⁩ تقريب فقط؟