Lambda funkcia v Pythone
Majme funkciu func,
ktorá ako parametre prijíma zoznam a
spätné volanie. Funkcia vytvorí nový
zoznam z prvkov pôvodného zoznamu. Pri
tom sa na každý z prvkov aplikuje
spätné volanie:
def func(lst, callback):
res = []
for el in lst:
res.append(callback(el))
return res
Teraz vytvorme funkciu square,
ktorá umocní jej odovzdané číslo
na druhú:
def square(num):
return num ** 2
Odovzdajme do parametrov func
číselný zoznam a funkciu square ako
spätné volanie:
print( func([1, 2, 3], square) )
Do konzoly sa vypíše nový zoznam, pozostávajúci z druhých mocnín čísel:
[1, 4, 9]
Avšak tento kód je možné výrazne
skrátiť použitím lambda funkcie
- anonymnej funkcie, ktorá sa volá
pomocou kľúčového slova lambda a
zapisuje sa do jedného riadku. Preto do
lambda funkcie je možné prepísať iba
funkcie, ktorých kód zaberá jeden riadok.
Syntax lambda funkcie vyzerá takto:
lambda parameter funkcie: operácia s parametrom funkcie
Prepíšme funkciu square pomocou
lambda funkcie a odovzdajme ju do
parametra func:
print( func([1, 2, 3], lambda num: num ** 2) )
Lambda funkciu je možné zapísať do premennej:
square = lambda num: num ** 2
print( func([1, 2, 3], square) )
Prepíšte nasledujúci kód pomocou lambda funkcie:
def func(num, clb):
return clb(num)
def clb(num):
return num + 1
print( func(2, clb) )
Prepíšte nasledujúci kód pomocou lambda funkcie:
def 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) )
Prepíšte nasledujúci kód pomocou lambda funkcie:
def func(num1, num2, clb):
res = clb(num1) + num2
return res
def clb(num):
return num ** 3
print(func(2, 6, clb))