إرجاع القيم من الدوال (return)
تصبح الدوال أكثر فائدة عندما تعيد (return) قيمًا بدل أن تكتفي بطباعتها. جرّب المثال التالي:
def double(x):
return x * 2
number = 5
twice = double(number)
print(number)
print(twice)
مررنا المتغير number، وقيمته 5، إلى الدالة double باعتباره الوسيط x. أعادت الدالة double قيمة x * 2، أي 5 * 2، أي 10، ثم أصبحت هذه القيمة هي قيمة المتغير twice.
الكلمة المحجوزة return داخل double تجعل التعبير double(number) نفسه يملك قيمة، وهي تحديدًا القيمة التي أعادتها الدالة. يمكنك تقريب الفكرة ذهنيًا بأن twice = double(number) يشبه twice = number * 2، مع أن التنفيذ الفعلي ليس مطابقًا حرفيًا لذلك.
لاحظ أيضًا أن double(number) لم تغيّر number. في النهاية تظل قيمة number هي 5. الدالة أعادت قيمة جديدة، وكان من الضروري أن يستخدم البرنامج هذه القيمة، مثل تخزينها في متغير. ويمكن أيضًا استخدامها مباشرة مثل print(double(number)).
جرّب الآن:
def double(x):
return x * 2
number = 5
double(number)
print(number)
في المثال السابق ما زالت double(number) تعيد 10، لكننا لم نستخدم القيمة المعادة، فضاعت ببساطة، وظلت قيمة number هي 5.
اكتب دالة اسمها quadruple تستقبل معاملًا واحدًا x وتعيد هذا المعامل مضروبًا في 4.
يجب أن تعتمد داخل جسم quadruple على الدالة double فقط؛ لا يُسمح بكتابة أعداد أو استخدام عملية الضرب مباشرة داخل جسم quadruple. فكّر في الضرب في 4 على أنه مضاعفة القيمة مرتين، وتأكد من استخدام القيمة المعادة من كل استدعاء.
To multiply by 4, multiply by 2 twice.
That means you need to call
doubletwice.Make sure you use the returned value from
doubleeach time.Make sure you have all the parts of a function definition.
That includes
def,(), and:.Make sure your function is named
quadruple.Make sure it accepts one parameter called
xin between the parentheses().Use the parameter inside the function body.
Make sure the body is indented.
Make sure you
returnsomething at the end.Look at the definition of
doublefor an example.Make sure that you don't call
quadrupleinside the function body ofquadruple. Check your indentation.
أحسنت! إليك حلين ممكنين:
def quadruple(x): x = double(x) x = double(x) return x
def quadruple(x): return double(double(x))