Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bagaimanakah tugasan berantai berfungsi dalam Python, dan apakah kemungkinan perangkap apabila berurusan dengan objek boleh ubah?

Bagaimanakah tugasan berantai berfungsi dalam Python, dan apakah kemungkinan perangkap apabila berurusan dengan objek boleh ubah?

Linda Hamilton
Linda Hamiltonasal
2024-10-27 10:10:03916semak imbas

How do chained assignments work in Python, and what are the potential pitfalls when dealing with mutable objects?

Bagaimanakah tugasan berantai berfungsi?

Tugasan berantai dalam Python, seperti:

x = y = somefunction()

adalah bersamaan dengan dua pernyataan berikut yang dilaksanakan secara berurutan:

temp = somefunction()
x = temp
y = temp

Ini bermakna ungkapan di sebelah kanan pengendali tugasan dinilai terlebih dahulu, dan nilai yang terhasil kemudiannya diberikan kepada semua pembolehubah di sebelah kiri, dari kiri ke kanan.

Sebagai contoh, kod berikut akan mencetak nombor 10 dua kali:

def somefunction():
    return 10

x = y = somefunction()
print(x)
print(y)

Adalah penting untuk ambil perhatian bahawa tugasan berantai boleh bermasalah apabila berurusan dengan objek boleh ubah, seperti senarai. Sebagai contoh, kod berikut memberikan senarai kosong yang sama kepada kedua-dua x dan y:

x = y = []

x.append(1)

print(x)
print(y)

Ini akan mencetak [1, 1] kerana kedua-dua x dan y merujuk kepada senarai yang sama. Jika anda berhasrat untuk membuat dua senarai berasingan, anda perlu menulis:

x = []
y = []

x.append(1)

print(x)
print(y)

Ini akan mencetak [1] dan [] kerana x dan y merujuk kepada senarai yang berbeza.

Atas ialah kandungan terperinci Bagaimanakah tugasan berantai berfungsi dalam Python, dan apakah kemungkinan perangkap apabila berurusan dengan objek boleh ubah?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
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