Fungsi Lambda dalam Python

Katakan kita ada fungsi func, yang parameternya menerima senarai dan callback. Fungsi akan mencipta senarai baharu dari elemen senarai asal. Pada masa yang sama, callback akan digunakan pada setiap elemen:

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

Sekarang mari kita cipta fungsi square, yang akan mengkuadratkan nombor yang diberikan kepadanya:

pythondef square(num):
  return num ** 2

Mari kita berikan kepada parameter func senarai nombor dan fungsi square sebagai callback:

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

Senarai baharu yang terdiri daripada kuasa dua nombor akan dipaparkan dalam konsol:

python[1, 4, 9]

Walau bagaimanapun, kod ini boleh disingkatkan dengan ketara dengan menggunakan fungsi lambda - fungsi tanpa nama yang dipanggil dengan kata kunci lambda dan ditulis dalam satu baris. Oleh itu, hanya fungsi yang kodnya mengambil satu baris boleh ditulis semula ke dalam fungsi lambda.

Sintaks fungsi lambda kelihatan seperti ini:

pythonlambda parameter fungsi: operasi dengan parameter fungsi

Mari kita tulis semula fungsi square menggunakan fungsi lambda dan berikannya kepada parameter func:

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

Fungsi lambda boleh ditulis ke dalam pembolehubah:

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

Tulis semula kod berikut melalui fungsi lambda:

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

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

Tulis semula kod 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 semula kod 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))