Fungsi Lambda di Python

Misalkan kita memiliki fungsi func, yang parameternya menerima sebuah list dan sebuah callback. Fungsi ini akan membuat list baru dari elemen list asli. Pada setiap elemen akan diterapkan callback-nya:

pythondef func(lst, callback):
  res = []
  
  for el in lst:
    res.append(callback(el))
    
  return res

Sekarang mari buat fungsi square, yang akan memangkatkan angka yang diberikan padanya menjadi kuadrat:

pythondef square(num):
  return num ** 2

Mari kita berikan parameter func sebuah list angka dan fungsi square sebagai callback:

pythonprint( func([1, 2, 3], square) )

Di konsol akan ditampilkan list baru, yang terdiri dari kuadrat angka-angka tersebut:

python[1, 4, 9]

Namun, kode ini dapat disingkat secara signifikan dengan menggunakan fungsi lambda - fungsi anonim, yang dipanggil dengan kata kunci lambda dan ditulis dalam satu baris. Oleh karena itu, ke dalam fungsi lambda hanya dapat ditulis ulang fungsi-fungsi yang kodenya hanya membutuhkan satu baris.

Sintaks fungsi lambda terlihat seperti ini:

pythonlambda parameter fungsi: operasi dengan parameter fungsi

Mari kita tulis ulang fungsi square menggunakan fungsi lambda dan berikan ke parameter func:

pythonprint( func([1, 2, 3], lambda num: num ** 2) )

Fungsi lambda dapat ditulis ke dalam variabel:

pythonsquare = lambda num: num ** 2
print( func([1, 2, 3], square) )
Задание 1

Tulis ulang kode berikut melalui fungsi lambda:

pythondef func(num, clb):
  return clb(num)

def clb(num):
  return num + 1
  
print( func(2, clb) )
Задание 2

Tulis ulang kode berikut melalui fungsi lambda:

pythondef func(num, clb1, clb2):
  return (clb1(num), clb2(num))

def clb1(num):
  return num + 1
  
def clb2(num):
  return num - 1
  
print( func(2, clb1, clb2) )
Задание 3

Tulis ulang kode berikut melalui fungsi lambda:

pythondef func(num1, num2, clb):
  res = clb(num1) + num2
  return res
  
def clb(num):
  return num ** 3
  
print(func(2, 6, clb))