البرمجة

تأثير دوال Python على المتغيرات العالمية

في البداية، يظهر لي أن الكود الذي قدمته يحتاج إلى بعض التعديلات لكي يعمل بشكل صحيح. لنقم بفحص الكود الذي قدمته ومن ثم نقوم بشرح السبب والحلاول الممكنة.

python
def 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 مع الأشياء المتغيرة.

قد تقوم بتحديث الكود كما يلي:

python
def 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.

المزيد من المعلومات

بالطبع، دعني أوضح المزيد حول الكود الذي قدمته والتغييرات التي يمكن إجراؤها لتحقيق النتائج المرجوة.

في الكود الحالي:

python
def 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 لا تقوم بإرجاع قيمة.

إذا كنت ترغب في تحقيق تأثير الدالة على المتغيرات الأصلية، يمكنك تحديث الكود كما يلي:

python
def 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].

زر الذهاب إلى الأعلى