Mengapa Lambdas Dicipta dalam Gelung Merujuk Objek Terakhir?

Patricia Arquette
Lepaskan: 2024-11-08 17:38:02
asal
504 orang telah melayarinya

Why Do Lambdas Created in Loops Reference the Last Object?

Menyesuaikan Penciptaan Lambda dalam Gelung

Apabila bekerja dengan senarai objek dan cuba mencipta lambda di dalam gelung yang mengakses atribut objek, anda boleh menghadapi masalah di mana semua lambda merujuk objek terakhir dalam senarai.

Untuk menangani perkara ini, kunci adalah untuk menangkap rujukan objek yang betul untuk setiap lambda. Coretan kod berikut menyediakan penyelesaian yang lebih baik:

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

Dengan menetapkan obj=obj sebagai hujah kata kunci dalam fungsi lambda, anda mencipta skop baharu untuk obj dalam setiap lelaran. Ini memastikan bahawa setiap lambda menangkap rujukan objek yang betul, mengasingkannya daripada perubahan dalam lelaran gelung berikutnya.

Akibatnya, apabila anda mengulangi lambdas_list dan memanggil setiap fungsi, anda akan mendapat hasil yang diharapkan untuk setiap objek dalam obj_list. Kaedah ini berkesan menangani isu semua lambda yang merujuk objek terakhir dalam senarai dan menyediakan penyelesaian yang lebih mantap dan pythonic.

Atas ialah kandungan terperinci Mengapa Lambdas Dicipta dalam Gelung Merujuk Objek Terakhir?. 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