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)
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!