Rumah > pembangunan bahagian belakang > Tutorial Python > Mengapa Menugaskan Senarai Baharu kepada Argumen Fungsi Tidak Mengubah Suai Senarai Asal dalam Python?

Mengapa Menugaskan Senarai Baharu kepada Argumen Fungsi Tidak Mengubah Suai Senarai Asal dalam Python?

Linda Hamilton
Lepaskan: 2024-11-01 11:42:02
asal
1102 orang telah melayarinya

Why Does Assigning a New List to a Function Argument Not Modify the Original List in Python?

Mengubah Senarai Dalam Ambit Fungsi

Dalam Python, apabila fungsi menerima senarai sebagai hujah, parameter berkesan menjadi rujukan yang menunjuk ke lokasi senarai asal dalam ingatan. Sebarang pengubahsuaian yang dibuat pada senarai dalam fungsi ditunjukkan secara langsung dalam senarai panggilan.

Walau bagaimanapun, kod berikut menunjukkan tingkah laku pelik yang mencabar pemahaman ini:

<code class="python">def function1(list_arg):
   a = function2()  # function2 returns an array of numbers
   list_arg = list(a)

list1 = [0] * 5
function1(list1)
print(list1)
# [0, 0, 0, 0, 0]</code>
Salin selepas log masuk

Dalam contoh ini, kami berhasrat untuk function1 mengubah suai list1 dengan menggantikan elemennya dengan elemen dari array a. Tetapi keputusan menunjukkan senarai1 kekal tidak berubah. Mengapa ini berlaku?

Menyingkap Kesalahan Penugasan Semula

Isu timbul daripada andaian yang salah bahawa memberikan nilai baharu kepada pembolehubah list_arg dalam function1 mengubah suai senarai asal. Pada hakikatnya, tugasan ini hanya menukar rujukan list_arg untuk menunjuk ke objek lain dalam ingatan. Senarai asal yang dirujuk oleh kod panggilan kekal tidak disentuh.

Mencapai Pengubahsuaian yang Diingini

Untuk berjaya mengubah senarai asal dalam function1, kita perlu mengubah suai elemen individunya. Ini boleh dicapai melalui penetapan keping:

<code class="python">list_arg[:] = list(a)</code>
Salin selepas log masuk

Penugasan kepingan menggantikan keseluruhan julat elemen dalam list_arg dengan nilai daripada list(a). Secara berkesan, tindakan ini secara langsung mengubah suai senarai asal.

Nota Peringatan

Walaupun tugasan slice menyediakan penyelesaian yang mudah, adalah penting untuk mengambil perhatian potensinya untuk kekeliruan. Dengan mengubah suai senarai di tempat, kod menjadi kurang telus dan lebih mudah terdedah kepada salah faham oleh pembangun lain yang mengekalkannya. Pertimbangkan pendekatan alternatif, seperti mengembalikan senarai baharu yang diubah suai daripada fungsi, untuk meningkatkan kejelasan dan kebolehbacaan kod.

Atas ialah kandungan terperinci Mengapa Menugaskan Senarai Baharu kepada Argumen Fungsi Tidak Mengubah Suai Senarai Asal dalam Python?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan