Rumah >pembangunan bahagian belakang >Tutorial Python >Mengapa Lambda Berfungsi dalam Gelung Hanya Mengembalikan Nilai Terakhir?
Lambda dalam For Loop Sahaja Mengambil Nilai Terakhir
Isu yang timbul apabila menggunakan fungsi lambda dalam gelung for yang sepatutnya menangkap nilai yang berbeza daripada pembolehubah tempatan. Walau bagaimanapun, diperhatikan bahawa apabila lambda ini digunakan, ia secara konsisten mengembalikan nilai akhir yang diberikan kepada pembolehubah setempat, walaupun ia berubah dalam gelung.
Memahami Isu
Tingkah laku yang membingungkan ini berpunca daripada masa penilaian fungsi lambda. Khususnya, nama yang digunakan dalam badan fungsi lambda dinilai apabila fungsi itu dilaksanakan, bukan pada masa definisinya.
Penyelesaian
Untuk menyelesaikan isu ini, ia adalah penting untuk menangkap nilai pembolehubah tempatan pada saat definisi lambda, bukan apabila ia digunakan. Satu pendekatan ialah mengisytiharkan pembolehubah yang anda ingin tangkap sebagai hujah kepada fungsi lambda.
options = ["INFO", "WARNING", "DEBUG"] for i in range(len(options)): option = options[i] __cMenu.add_command(label="{}".format(option), command=lambda opt=option: self.filter_records(column, opt))
Dengan menetapkan "option=option" sebelum titik bertindih, kami secara eksplisit menetapkan nilai "option" sebagai hujah kepada fungsi lambda, memastikan setiap lambda menangkap nilai yang dimaksudkan.
Atas ialah kandungan terperinci Mengapa Lambda Berfungsi dalam Gelung Hanya Mengembalikan Nilai Terakhir?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!