Rumah > pembangunan bahagian belakang > Tutorial Python > Mengapa Lambdas Within Loops dalam Python Share State?

Mengapa Lambdas Within Loops dalam Python Share State?

Patricia Arquette
Lepaskan: 2024-11-18 05:53:02
asal
305 orang telah melayarinya

Why Do Lambdas Within Loops in Python Share State?

Lambdas dalam Gelung: Menangani Keadaan Dikongsi

Dalam Python, lambdas yang dicipta dalam gelung boleh mempamerkan gelagat yang tidak dijangka disebabkan keadaan dikongsi. Sebagai contoh, pertimbangkan kod berikut yang bertujuan untuk mencipta lambda yang mengakses harta objek:

lambdas_list = []
for obj in obj_list:
   lambdas_list.append(lambda : obj.some_var)
Salin selepas log masuk

Walau bagaimanapun, apabila melelaran dan memanggil lambda ini, nilai sifat objek terakhir sentiasa diperoleh:

for f in lambdas_list:
    print(f())
Salin selepas log masuk
Salin selepas log masuk

Untuk menangani had ini, pengubahsuaian mudah boleh dibuat:

lambdas_list.append(lambda obj=obj: obj.some_var)
Salin selepas log masuk

Dengan memberikan argumen lalai kepada lambda, nilai semasa objek ditangkap pada masa penciptaan. Ini memastikan bahawa setiap lambda mengekalkan keadaannya sendiri, dan hasil yang diinginkan diperoleh:

for f in lambdas_list:
    print(f())
Salin selepas log masuk
Salin selepas log masuk

Atas ialah kandungan terperinci Mengapa Lambdas Within Loops dalam Python Share State?. 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