Rumah >pembangunan bahagian belakang >Tutorial Python >Mengapa Lambdas dalam Gelung Menangkap Nilai Terakhir, dan Bagaimanakah Ini Boleh Dielakkan?
Lambda in For Loop Captures Last Value
Dalam kod anda:
for i in range(len(options)): option = options[i] __cMenu.add_command( label="{} ".format(option), command=lambda: self.filter_records(column, option) )
setiap lambda menangkap pilihan pembolehubah , yang dinilai apabila fungsi lambda dicipta. Ini bermakna semua lambda menangkap nilai pilihan yang sama, iaitu nilai terakhir yang digunakan dalam gelung.
Untuk mengelakkan perkara ini, anda perlu memastikan setiap lambda menangkap nilai pilihan yang berbeza. Ini boleh dilakukan dengan menggunakan sintaks lambda dengan parameter pilihan, seperti:
for i in range(len(options)): option = options[i] __cMenu.add_command( label="{} ".format(option), command=lambda opt=option: self.filter_records(column, opt) )
Dalam kes ini, fungsi lambda menangkap nilai pilihan sebagai opt parameter, memastikan setiap lambda menangkap yang berbeza nilai pilihan.
Atas ialah kandungan terperinci Mengapa Lambdas dalam Gelung Menangkap Nilai Terakhir, dan Bagaimanakah Ini Boleh Dielakkan?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!