Python-da Lambda Funksiyasi

Tutaq ki, bizim parametr kimi siyahı və callback qəbul edən func adlı funksiyamız var. Funksiya orijinal siyahının elementlərindən yeni siyahı yaradacaq. Bu zaman hər bir elementə callback tətbiq olunacaq:

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

İndi isə önünə verilən ədədi kvadrata yüksəldən square funksiyasını yaradaq:

pythondef square(num):
  return num ** 2

Gəlin func-ın parametrlərinə ədədi siyahını və callback kimi square funksiyasını ötürək:

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

Konsola ədədlərin kvadratlarından ibarət yeni siyahı çıxacaq:

python[1, 4, 9]

Lakin bu kodu lambda funksiyası istifadə edərək əhəmiyyətli dərəcədə qısaltmaq olar - bu, lambda açar sözü ilə çağırılan və bir sətirdə yazılan anonim funksiyadır. Buna görə də lambda funksiyasına yalnız kodu bir sətir tutan funksiyaları yenidən yazmaq olar.

Lambda funksiyasının sintaksisi belə görünür:

pythonlambda funksiya parametri: funksiya parametri ilə əməliyyat

Gəlin square funksiyasını lambda funksiyası ilə yenidən yazaq və onu func-ın parametrinə ötürək:

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

Lambda funksiyasını dəyişənə yazmaq olar:

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

Aşağıdakı kodu lambda funksiyası ilə yenidən yazın:

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

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

Aşağıdakı kodu lambda funksiyası ilə yenidən yazın:

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

Aşağıdakı kodu lambda funksiyası ilə yenidən yazın:

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