في البداية، يظهر لي أن الكود الذي قدمته يحتاج إلى بعض التعديلات لكي يعمل بشكل صحيح. لنقم بفحص الكود الذي قدمته ومن ثم نقوم بشرح السبب والحلاول الممكنة.
pythondef m(x, y):
x = 2
y = [3, 5]
a = 1
b = [0, 26]
print(m(a, b))
الكود الذي قدمته لا يقوم بإرجاع أي قيمة من الدالة m
، لذلك عند استدعاء الدالة print(m(a, b))
، يظهر None
. هذا يحدث لأن الدالة m
لا تقوم بأي عمل ذي قيمة وتعود بشكل طبيعي إلى القيمة None
التي تعتبر القيمة الافتراضية إذا لم يتم تحديد قيمة إرجاع.
إذا كنت ترغب في تغيير قيم الوسائط دون الحاجة إلى استخدام return
، يمكنك تغيير الطريقة التي تمر فيها الوسائط إلى الدالة. ومع ذلك، يجب أن يكون لديك فهم كامل لكيفية تعامل Python مع الأشياء المتغيرة.
قد تقوم بتحديث الكود كما يلي:
pythondef m(x, y):
x = 2
y = [3, 5]
a = 1
b = [0, 26]
m(a, b)
print(a, b)
ومع ذلك، يجب عليك مراجعة متغيرات الدالة m
وكيف تؤثر على متغيرات a
و b
في المستوى العلوي من البرنامج. في الحالة الحالية، لن يتغير شيء في قيم a
و b
بسبب الدالة m
.
المزيد من المعلومات
بالطبع، دعني أوضح المزيد حول الكود الذي قدمته والتغييرات التي يمكن إجراؤها لتحقيق النتائج المرجوة.
في الكود الحالي:
pythondef m(x, y):
x = 2
y = [3, 5]
a = 1
b = [0, 26]
print(m(a, b))
-
الدالة
m
لا تقوم بأي عمل يؤدي إلى تغيير قيم المتغيرات الممررة لها. تقوم بتعيين قيم جديدة للمتغيرات المحليةx
وy
في الدالة نفسها، ولكن هذه التغييرات لا تؤثر على المتغيرات الأصليةa
وb
في المستوى العلوي. -
عند استدعاء
print(m(a, b))
، يتم طباعةNone
، لأن الدالةm
لا تقوم بإرجاع قيمة.
إذا كنت ترغب في تحقيق تأثير الدالة على المتغيرات الأصلية، يمكنك تحديث الكود كما يلي:
pythondef m(x, y):
x = 2
y[0] = 3
y[1] = 5
a = 1
b = [0, 26]
m(a, b)
print(a, b)
بهذا التحديث، يتم تعديل المتغير b
داخل الدالة m
بحيث تصبح قيمها [3, 5]
. وبالتالي، سيتم طباعة القيم الجديدة للمتغيرات a
و b
بعد استدعاء الدالة، والنتيجة ستكون 1 [3, 5]
.