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

Linda Hamilton
Lepaskan: 2024-10-27 10:10:03
asal
929 orang telah melayarinya

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()
Salin selepas log masuk

adalah bersamaan dengan dua pernyataan berikut yang dilaksanakan secara berurutan:

temp = somefunction()
x = temp
y = temp
Salin selepas log masuk

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)
Salin selepas log masuk

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)
Salin selepas log masuk

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)
Salin selepas log masuk

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!

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
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!