Rumah >pembangunan bahagian belakang >Tutorial Python >Bagaimanakah Penutupan Fungsi Lambda dalam Python Menangkap Pembolehubah?
Penutupan Fungsi Lambda: Sifat Menarik dan Strategi Tangkapan
Dalam Python, fungsi lambda mempamerkan gelagat menarik berkenaan penutupan, dan memahami mekaniknya adalah penting untuk pengekodan yang berkesan. Artikel ini meneroka soalan mengenai penangkapan penutupan dan menyediakan pendekatan praktikal untuk mencapai hasil yang diinginkan.
1. Apakah yang Ditangkap oleh Penutupan Fungsi Lambda?
Pertimbangkan senario biasa di mana penutupan lambda dibuat dalam gelung. Setiap penutupan direka untuk menangkap nilai pembolehubah gelung semasa. Walau bagaimanapun, hasil berlawanan dengan intuisi boleh timbul apabila memeriksa tingkah laku penutupan.
2. Menangkap Nilai Semasa
Intipati menangkap nilai semasa bukanlah dengan rujukan penunjuk seperti yang mungkin diandaikan. Sebaliknya, penutupan menangkap "gambar" pembolehubah yang dirujuk pada masa penciptaan. Akibatnya, sebarang pengubahsuaian seterusnya kepada pembolehubah itu tidak mempunyai kesan ke atas nilai yang ditangkap.
3. Penyelesaian Elegan
Untuk memastikan fungsi lambda menangkap nilai semasa yang dimaksudkan, pertimbangkan untuk menggunakan parameter dengan nilai lalai. Teknik ini pada asasnya "memaksa" penangkapan nilai yang dikehendaki. Berikut ialah ilustrasi:
for i in [0, 1, 2, 3]: adders[i] = lambda a, i=i: i + a
Dengan menyatakan parameter i dengan nilai lalai i (pembolehubah gelung), penutupan menangkap nilai semasa i pada masa penciptaan. Akibatnya, perubahan kepada i di luar fungsi lambda tidak menjejaskan nilai yang ditangkap, membawa kepada hasil yang dijangkakan.
Atas ialah kandungan terperinci Bagaimanakah Penutupan Fungsi Lambda dalam Python Menangkap Pembolehubah?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!