القيم المُرجَعة

6.5 القيم المُرجَعة

أهداف التعلم

في نهاية هذا القسم، ينبغي أن تكون قادرًا على:

  • تحديد القيمة المُرجَعة للدالّة.
  • استخدام تعليمات الإرجاع في الدوال لإرجاع القيم.

الإرجاع من دالّة

عندما تنهي الدالّة عملها، فإنها تعود وتوفر نتيجة للشِفرة المستدعية. تُنهي تعليمة الإرجاع تنفيذ الدالّة ويمكنها تحديد قيمة لإرجاعها إلى مستدعي الدالّة. الدوال التي تم تقديمها حتى الآن لم تتضمن تعليمة return، وهو ما يعادل إرجاع None، مما يمثل عدم وجود قيمة.

نقطة تحقق

إرجاع قيمة من دالّة

مفاهيم تطبيقية

استخدام تعليمات الإرجاع

1.
ماذا تُرجع الدالّة calc_mpg(miles, gallons)؟
def calc_mpg(miles, gallons):
  mpg = miles/gallons
  return mpg
  1. mpg
  2. None
  3. Error
2.
ماذا تُرجع الدالّة calc_sqft()؟
def calc_sqft(length, width):
  sqft = length * width
  return
  1. sqft
  2. None
  3. Error
3.
ما الفرق بين hw_1() و hw_2()؟
def hw_1():
  print("Hello world!")
  return

def hw_2():
  print("Hello world!")
  1. الدالّة hw_1() تُرجع سلسلة نصية، بينما hw_2() لا تُرجع شيئًا.
  2. الدالّة hw_1() تُرجع None، بينما hw_2() لا تُرجع شيئًا.
  3. لا يوجد فرق

استخدام تعليمات إرجاع متعددة

قد تستخدم الدوال التي تحتوي على مسارات تنفيذ متعددة تعليمات return متعددة. مثال: قد تحتوي الدالّة التي تتضمن تعليمة if-else على تعليمَتَي return لكل فرع. تُنهي تعليمات Return دائمًا الدالّة وتُعيد سير التنفيذ إلى الشِفرة المستدعية.

في الجدول أدناه، تستقبل الدالّة calc_mpg() الأميال المقطوعة وكمية الغالونات المستهلكة من الوقود، وتحسب استهلاك السيارة من الوقود (ميل لكل غالون). تتحقق الدالّة calc_mpg() مما إذا كانت قيمة gallons تساوي 0 (لتجنب القسمة على صفر)، وإذا كان الأمر كذلك، فإنها تُرجع -1، وهي قيمة تُستخدم غالبًا للإشارة إلى وجود مشكلة.

def calc_mpg(miles, gallons):
  if gallons > 0:
    mpg = miles/gallons
    return mpg
  else:
    print("Gallons can't be 0")
    return -1
    
car_1_mpg = calc_mpg(448, 16)
print("Car 1's mpg is", car_1_mpg)
car_2_mpg = calc_mpg(300, 0)
print("Car 2's mpg is", car_2_mpg)
Car 1's mpg is 28.0
Gallons can't be 0
Car 2's mpg is -1
جدول 6.1 حساب الأميال لكل غالون والتحقق من القسمة على صفر.

مفاهيم تطبيقية

تعليمات إرجاع متعددة

4.
ماذا تُرجع الدالّة yarn_weight(3)؟
def yarn_weight(num):
  if num == 0:
    return "lace"
  elif num == 1:
    return "sock"
  elif num == 2:
    return "sport"
  elif num == 3:
    return "dk"
  elif num == 4:
    return "worsted"
  elif num == 5:
    return "bulky"
  else:
    return "super bulky"
  1. "lace"
  2. "dk"
  3. "super bulky"
5.
ما الناتج؟
def inc_volume(level, max):
  if level < max:
    return level
    level += 1
  else:
    return level

vol1 = inc_volume(9, 10)
print(vol1)
vol2 = inc_volume(10, 10)
print(vol2)
  1. 9
    10
    
  2. 10
    10
    
  3. 10
    11
    

استخدام الدوال كقيم

الدوال هي كائنات تُقيّم إلى قيم، لذا يمكن استخدام استدعاءات الدوال في التعبيرات. يمكن دمج استدعاء دالّة مع استدعاءات دوال أخرى، ومُتغيِّرات، وقيم حرفية طالما أن القيمة المُرجَعة متوافقة مع العملية.

نقطة تحقق

استخدام استدعاءات الدوال في التعبيرات

مفاهيم تطبيقية

استخدام قيم الدوال

6.
ما القيمة المُحدَّثة للمُتغيِّر bill؟
def tax(total):
  return .06 * total

def auto_tip(total):
  return .2 * total

bill = 100.0
bill += tax(bill) + auto_tip(bill)
  1. 26.0
  2. 126.0
7.
ما قيمة val2؟
def sq(num):
  return num * num

def offset(num):
  return num - 2

val = 5
val2 = sq(offset(val))
  1. 9
  2. 23

جرّب بنفسك

تقدير عدد أيام الحياة

اكتب دالّة، days_alive()، تستقبل العمر بالسنوات وتُخرج عدد الأيام التقديرية التي عاشها المستخدم كعدد صحيح. افترض أن كل سنة تحتوي على 365.24 يومًا. استخدم الدالّة round()، التي تستقبل عددًا وتُرجع أقرب عدد صحيح.

ثم اكتب برنامجًا رئيسيًا يقرأ عمر المستخدم ويُخرج نتيجة الدالّة days_alive().

المدخلات المعطاة:

    21

الإخراج هو:

    You have been alive about 7670 days.

جرّب بنفسك

حساب متوسط القوائم

اكتب دالّة، avg_list()، تستقبل قائمة وتُرجع متوسط قيم القائمة.