Rumah >pembangunan bahagian belakang >Tutorial Python >Mengapa Kaedah Pengubahsuaian Senarai Python Mengembalikan `Tiada`?

Mengapa Kaedah Pengubahsuaian Senarai Python Mengembalikan `Tiada`?

Susan Sarandon
Susan Sarandonasal
2024-12-20 18:29:13839semak imbas

Why Do Python's List Modification Methods Return `None`?

Mengapa Kaedah Senarai Python Tidak Mengembalikan Daripada Senarai?

Mengubah suai kaedah senarai seperti menambah, mengisih, melanjutkan, mengalih keluar, mengosongkan dan membalikkan biasanya tidak mengembalikan Tiada sebaliknya daripada senarai yang diubah suai itu sendiri. Keputusan reka bentuk ini berakar umbi dalam prinsip menyeluruh Python bahawa fungsi yang mengubah suai objek di tempat harus mengembalikan Tiada.

Rasional

Menurut Guido van Rossum, arkitek Python , pilihan ini berfungsi untuk menekankan bahawa objek baharu tidak dibuat. Dengan tidak mengembalikan senarai yang diubah suai, ia tidak menggalakkan penggunaan kesan sampingan berantai, seperti:

x.compress().chop(y).sort(z)

yang boleh mengelirukan dan menghalang kebolehbacaan. Sebaliknya, Python lebih suka bentuk yang lebih eksplisit:

x.compress()
x.chop(y)
x.sort(z)

Pemisahan ini menjelaskan bahawa setiap kaedah bertindak pada objek yang sama.

Operasi Rantaian

Semasa merantai sisi -panggilan kesan tidak digalakkan, Python membenarkannya untuk operasi yang mengembalikan nilai baharu, seperti pemprosesan rentetan operasi:

y = x.rstrip("\n").split(":").lower()

Pertimbangan

Keputusan reka bentuk ini mempunyai kelemahan. Ia menghalang "rantaian" intuitif pemprosesan senarai, seperti:

mylist.reverse().append('a string')[:someLimit]

Alternatif seperti pemahaman senarai dan struktur data lain boleh menyediakan kefungsian yang serupa tanpa melanggar konvensyen "tiada pulangan kesan sampingan".

Atas ialah kandungan terperinci Mengapa Kaedah Pengubahsuaian Senarai Python Mengembalikan `Tiada`?. 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