Ya, ungkapan Python Lambda tidak boleh mengandungi pernyataan. Sebelum kita menyelidiki sebabnya, mari kita fahami apa itu Lambda, ungkapan dan pernyataannya.
Ekspresi Lambda membenarkan mentakrifkan fungsi tanpa nama. Fungsi Lambda ialah fungsi tanpa nama tanpa nama. Mari lihat sintaks −
lambda arguments: expressions
Kata kunci lambda mentakrifkan fungsi lambda. Ungkapan lambda mengandungi satu atau lebih parameter, tetapi ia hanya boleh mempunyai satu ungkapan.
Mari kita lihat contoh −
myStr = "Thisisit!" (lambda myStr : print(myStr))(myStr)
Thisisit!
Dalam contoh ini kita akan mengisih senarai berdasarkan nilai senarai lain iaitu senarai kedua akan diisih mengikut indeksnya dalam susunan yang disusun -
# Two Lists list1 = ['BMW', 'Toyota', 'Audi', 'Tesla', 'Hyundai'] list2 = [2, 5, 1, 4, 3] print("List1 = \n",list1) print("List2 (indexes) = \n",list2) # Sorting the List1 based on List2 res = [val for (_, val) in sorted(zip(list2, list1), key=lambda x: x[0])] print("\nSorted List = ",res)
List1 = ['BMW', 'Toyota', 'Audi', 'Tesla', 'Hyundai'] List2 (indexes) = [2, 5, 1, 4, 3] Sorted List = ['Audi', 'BMW', 'Hyundai', 'Tesla', 'Toyota']
Kami melihat dua contoh penggunaan ungkapan Lambda di atas. Ungkapan Lambda Python tidak boleh mengandungi pernyataan kerana rangka kerja sintaks Python tidak dapat mengendalikan pernyataan yang bersarang dalam ungkapan.
Dalam Python, fungsi sudah pun menjadi objek kelas pertama dan boleh diisytiharkan dalam skop tempatan. Jadi satu-satunya kelebihan menggunakan lambda dan bukannya mentakrifkan fungsi secara tempatan ialah anda tidak perlu memberikan nama fungsi, iaitu fungsi tanpa nama, tetapi ia hanya pembolehubah tempatan yang ditetapkan kepada objek fungsi!
Atas ialah kandungan terperinci Mengapa ungkapan lambda Python tidak boleh mengandungi pernyataan?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!