Inilah implementasi yang lebih menarik dari lambda multi-jalur. Tidak mungkin untuk mencapai karena bagaimana python menggunakan indentasi sebagai cara untuk menyusun kode.
Tapi untungnya bagi kami, pemformatan indent dapat dinonaktifkan menggunakan array dan tanda kurung.
Seperti yang sudah ditunjukkan beberapa orang, Anda dapat menulis kode seperti itu:
lambda args: (expr1, expr2,... exprN)
Secara teori jika Anda dijamin memiliki evaluasi dari kiri ke kanan itu akan berhasil tetapi Anda masih kehilangan nilai yang diteruskan dari satu ekspresi ke yang lain.
Salah satu cara untuk mencapai apa yang sedikit lebih bertele-tele adalah dengan memiliki
lambda args: [lambda1, lambda2, ..., lambdaN]
Di mana setiap lambda menerima argumen dari yang sebelumnya.
def let(*funcs):
def wrap(args):
result = args
for func in funcs:
if not isinstance(result, tuple):
result = (result,)
result = func(*result)
return result
return wrap
Metode ini memungkinkan Anda menulis sesuatu yang sedikit mirip / skema.
Jadi Anda dapat menulis hal-hal seperti ini:
let(lambda x, y: x+y)((1, 2))
Metode yang lebih kompleks dapat digunakan untuk menghitung sisi miring
lst = [(1,2), (2,3)]
result = map(let(
lambda x, y: (x**2, y**2),
lambda x, y: (x + y) ** (1/2)
), lst)
Ini akan mengembalikan daftar angka skalar sehingga dapat digunakan untuk mengurangi beberapa nilai menjadi satu.
Memiliki banyak lambda tentu tidak akan menjadi sangat efisien tetapi jika Anda dibatasi itu bisa menjadi cara yang baik untuk menyelesaikan sesuatu dengan cepat maka tulis ulang sebagai fungsi yang sebenarnya nanti.