Rumah > pembangunan bahagian belakang > Tutorial Python > Bagaimanakah Saya Boleh Mengelak Kelakuan Tidak Dijangka dengan Parameter Lalai Boleh Berubah dalam Python?

Bagaimanakah Saya Boleh Mengelak Kelakuan Tidak Dijangka dengan Parameter Lalai Boleh Berubah dalam Python?

Linda Hamilton
Lepaskan: 2024-12-15 14:08:10
asal
533 orang telah melayarinya

How Can I Avoid Unexpected Behavior with Mutable Default Parameters in Python?

Mengelakkan Isu dengan Parameter Lalai dalam Python

Apabila bekerja dengan parameter lalai Python, kerumitan tertentu boleh timbul, terutamanya dengan argumen boleh ubah. Untuk mengelakkan isu ini, adalah penting untuk menangani tingkah laku parameter lalai.

Sebagai contoh, pertimbangkan fungsi berikut:

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

Setelah panggilan awal, senarai kosong parameter lalai berfungsi seperti yang dijangkakan . Walau bagaimanapun, panggilan seterusnya mengakibatkan tingkah laku yang tidak dijangka di mana parameter lalai, senarai kosong pada mulanya, mengekalkan elemen yang ditambahkan daripada pelaksanaan sebelumnya.

Untuk menyelesaikan isu ini dan mencipta senarai kosong baharu dengan setiap panggilan fungsi, Python menyediakan dua pendekatan :

1. Ujian untuk Tiada:

def my_func(working_list=None):</p><div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:php;toolbar:false">if working_list is None: 
    working_list = []
working_list.append("a")
print(working_list)
Salin selepas log masuk

2. Tugasan Bersyarat:

def my_func(working_list=None):</p><div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:php;toolbar:false">working_list = [] if working_list is None else working_list
working_list.append("a")
print(working_list)
Salin selepas log masuk

Kedua-dua penyelesaian memastikan bahawa penyelesaian baharu senarai kosong dimulakan sebelum menambahkan elemen padanya, dengan itu mengasingkan setiap panggilan fungsi dan menghalang pengumpulan data daripada sebelumnya hukuman mati.

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Mengelak Kelakuan Tidak Dijangka dengan Parameter Lalai Boleh Berubah dalam Python?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Artikel sebelumnya:Mengapakah pytz Menunjukkan Offset Zon Masa Tidak Dijangka, dan Bagaimana Saya Boleh Mengendalikannya dengan Betul? Artikel seterusnya:Bagaimanakah Saya Boleh Mencipta Talian Paip Berbilang Proses dengan Cekap dalam Python Menggunakan `subprocess.Popen`?
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
Isu terkini
Topik-topik yang berkaitan
Lagi>
Cadangan popular
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan