Lambdas dalam Gelung: Menangani Keadaan Dikongsi
Dalam Python, lambdas yang dicipta dalam gelung boleh mempamerkan gelagat yang tidak dijangka disebabkan keadaan dikongsi. Sebagai contoh, pertimbangkan kod berikut yang bertujuan untuk mencipta lambda yang mengakses harta objek:
lambdas_list = [] for obj in obj_list: lambdas_list.append(lambda : obj.some_var)
Walau bagaimanapun, apabila melelaran dan memanggil lambda ini, nilai sifat objek terakhir sentiasa diperoleh:
for f in lambdas_list: print(f())
Untuk menangani had ini, pengubahsuaian mudah boleh dibuat:
lambdas_list.append(lambda obj=obj: obj.some_var)
Dengan memberikan argumen lalai kepada lambda, nilai semasa objek ditangkap pada masa penciptaan. Ini memastikan bahawa setiap lambda mengekalkan keadaannya sendiri, dan hasil yang diinginkan diperoleh:
for f in lambdas_list: print(f())
Atas ialah kandungan terperinci Mengapa Lambdas Within Loops dalam Python Share State?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!