عندما نلقي نظرة على الكود الذي قدمته، نجد أن الدالة fun
تقوم بتنفيذ عبارة return my_dict[x]
داخل حلقة for
، وهذا يعني أنها ستقوم بالعودة من أول تكرار في الحلقة فور الانتهاء منه.
لفهم السبب وراء عودة قيمة واحدة فقط، يجب أن نفهم كيف تعمل عبارة return
في Python. عندما تصل الدالة إلى عبارة return
، تتوقف الدالة عن تنفيذها وتعيد القيمة المحددة. في هذه الحالة، عندما يتم تنفيذ return my_dict[x]
لأول مرة في الحلقة، تقوم الدالة بالعودة فوراً، وبالتالي لا تكمل باقي التكرارات.
لحل هذه المشكلة وجعل الدالة تعيد جميع القيم، يمكن استخدام قائمة لتخزين القيم ومن ثم إرجاعها بشكل كامل بعد انتهاء الحلقة. فيما يلي تعديل للكود:
pythonmy_dict = {"key1": 2, "key2": 3, "key3": 4}
def fun():
values_list = []
for x in my_dict:
values_list.append(my_dict[x])
return values_list
result = fun()
print(result)
بهذا التعديل، ستقوم الدالة بإنشاء قائمة تحتوي على جميع القيم الموجودة في الفهرس، ثم تقوم بإرجاع هذه القائمة بشكل كامل بعد اكتمال الحلقة.
المزيد من المعلومات
عندما نتناول هذا الكود، نجد أنه يقوم بتعريف قاموس (my_dict
) يحتوي على ثلاثة أزواج مفتاح وقيمة، حيث يكون المفتاح هو اسم المفتاح (مثل “key1”) والقيمة هي القيمة المرتبطة به.
الدالة (fun
) هي التي تحتاج إلى فحصها. في الواقع، عند تنفيذ الحلقة for
، يتم الوصول إلى كل مفتاح في القاموس، ولكن هنا هو الجزء المهم: في كل تكرار، يتم استخدام return
للعودة بقيمة مرتبطة بالمفتاح الحالي. وهنا يكمن السبب في أن الدالة تعيد قيمة واحدة فقط.
لفهم هذا بشكل أفضل، يجب أن نفهم كيف تعمل عبارة return
. عندما تنفذ return
، يتم إنهاء تنفيذ الدالة وإعادة القيمة المحددة. في حالة هذا الكود، يحدث ذلك بمجرد الوصول إلى أول مفتاح في القاموس، وبالتالي لا يتم استكمال باقي التكرارات.
لحل هذه المشكلة والحصول على جميع القيم، يمكن تخزين القيم في قائمة وإرجاعها بعد الحلقة. هذا يتيح للدالة إرجاع جميع القيم بدلاً من قيمة واحدة. الكود المعدل يبدو كما يلي:
pythonmy_dict = {"key1": 2, "key2": 3, "key3": 4}
def fun():
values_list = []
for x in my_dict:
values_list.append(my_dict[x])
return values_list
result = fun()
print(result)
باستخدام هذا التعديل، ستحتوي result
على القائمة [2, 3, 4]
، وهي جميع القيم الموجودة في القاموس.