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
Linda Hamiltonasal
2024-12-15 14:08:10529semak imbas

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)

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><pre class="brush:php;toolbar:false">if working_list is None: 
    working_list = []
working_list.append("a")
print(working_list)

2. Tugasan Bersyarat:

def my_func(working_list=None):</p><pre class="brush:php;toolbar:false">working_list = [] if working_list is None else working_list
working_list.append("a")
print(working_list)

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!

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