Rumah > pembangunan bahagian belakang > Tutorial Python > Bagaimanakah Saya Boleh Mengelak Kelakuan Tidak Dijangka Apabila Menggunakan Parameter Lalai dalam Fungsi Python?

Bagaimanakah Saya Boleh Mengelak Kelakuan Tidak Dijangka Apabila Menggunakan Parameter Lalai dalam Fungsi Python?

Mary-Kate Olsen
Lepaskan: 2024-12-17 04:08:25
asal
924 orang telah melayarinya

How Can I Avoid Unexpected Behavior When Using Default Parameters in Python Functions?

Mengelakkan Perangkap Parameter Lalai dalam Python

Dalam Python, ia boleh menggoda untuk menggunakan senarai kosong sebagai parameter lalai. Walau bagaimanapun, ini boleh membawa kepada tingkah laku yang tidak dijangka disebabkan oleh pengikatan awal parameter lalai.

Pertimbangkan fungsi seperti ini:

def my_func(working_list=[]):
    working_list.append("a")
    print(working_list)
Salin selepas log masuk

Pada mulanya, parameter lalai berfungsi seperti yang diharapkan. Walau bagaimanapun, panggilan berikutnya terus mengemas kini senarai yang sama, menghasilkan senarai bercetak yang berkembang dengan setiap seruan.

Untuk mengelakkan ini, uji secara eksplisit kewujudan parameter lalai dalam badan fungsi dan tetapkan senarai kosong baharu jika perlu:

def my_func(working_list=None):
    if working_list is None:
        working_list = []
    working_list.append("a")
    print(working_list)
Salin selepas log masuk

Sebagai alternatif, anda boleh menggunakan a one-liner:

working_list = [] if working_list is None else working_list
Salin selepas log masuk

Selain: PEP 8 mengesyorkan penggunaan is None untuk perbandingan dengan singleton seperti None. Elakkan menggunakan == Tiada, kerana ia boleh membawa kepada keputusan yang salah.

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Mengelak Kelakuan Tidak Dijangka Apabila Menggunakan Parameter Lalai dalam Fungsi 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