Funkcje lambda w Pythonie, czyli funkcje anonimowe, to niewielkie, pozbawione nazwy fragmenty kodu, które pozwalają wyrazić prostą funkcjonalność w bardzo zwięzły sposób. Stosowane są najczęściej w miejscach, gdzie potrzebna jest szybka definicja logiki bez formalnego nadawania funkcji nazwy.
Co to jest funkcja lambda?
- Funkcja lambda jest funkcją anonimową, czyli pozbawioną nazwy;
- Ma zawsze prostą postać – zawiera tylko jedno wyrażenie w ciele funkcji;
- Zwraca wynik tego wyrażenia i może przyjmować dowolną liczbę argumentów;
- Składnia:
lambda argumenty: wyrażenie
- Nie używa się dla niej słowa
def, tylko kluczowe słowolambda.
Podstawowe zastosowania
Funkcje lambda są szczególnie popularne w trzech kontekstach:
- Filtracja – z funkcją
filter()do wybierania określonych elementów ze zbioru; - Transformacja – z funkcją
map()do przetwarzania elementów zbioru; - Redukcja – z funkcją
reduce()do zagregowania zbioru do pojedynczej wartości.
Przykłady:
- Przekazanie do zmiennej –
podwoj = lambda x: x * 2
print(podwoj(4)) # wynik: 8
- Sortowanie listy wg określonej zasady:
liczby = [1, 4, 2, 7, 5]
posortowane = sorted(liczby, key=lambda x: -x) # [7, 5, 4, 2, 1]
- Filtrowanie parzystych liczb –
liczby = [1, 2, 3, 4, 5, 6]
parzyste = list(filter(lambda x: x % 2 == 0, liczby)) # [2, 4, 6]
Cechy i ograniczenia funkcji lambda
- Nie mają nazwy – są anonimowe;
- Jedna linia kodu – ciało funkcji może być tylko pojedynczym wyrażeniem;
- Kod natychmiastowy – lambdy można utworzyć i użyć bezpośrednio, np. w argumentach innych funkcji;
- Nie nadają się do skomplikowanej logiki – nie wolno umieszczać instrukcji wieloliniowych, warunkowych czy pętli wewnątrz lambdy;
- Ograniczona czytelność – zwłaszcza w dużych projektach, warto unikać zbyt złożonych lambd ze względu na trudność utrzymania kodu.
Funkcje lambda vs. zwykłe funkcje
| Typ funkcji | Sposób deklaracji | Złożoność | Przeznaczenie |
|---|---|---|---|
| Lambda | lambda arg: wyrażenie |
Prosta | Krótka logika, np. z map/filter |
Zwykła (def) |
def nazwafunkcji(arg): ... |
Złożona | Wielokrotnie używana, złożona logika |
Funkcje lambda w praktyce – poradnik
- Tworzenie lambdy –
python suma = lambda x, y: x + y print(suma(2, 3)) # wynik: 5; - Przekazywanie lambdy do funkcji wyższego rzędu –
python lista = [1, 2, 3, 4, 5] podniesione = list(map(lambda x: x ** 2, lista)) # [1, 4, 9, 16, 25]; - Wywołanie lambdy bezpośrednio (IIFE) –
python wynik = (lambda x, y: x * y)(3, 4) # wynik: 12; - Filtrowanie list –
python liczby = [1, 3, 6, 7, 9] nieparzyste = list(filter(lambda x: x % 2 != 0, liczby)) # [1, 3, 7, 9]; - Redukowanie listy –
python from functools import reduce suma = reduce(lambda x, y: x + y, [1, 2, 3, 4]) # wynik: 10.
Najczęstsze zastosowania funkcji lambda
- Sortowanie niestandardowe elementów,
- Szybkie filtrowanie danych,
- Implementacja krótkiej logiki w funkcjach jak
map,filter,reduce, - Tworzenie tymczasowych funkcji bez potrzeby nadawania nazwy.
Wskazówki dobrej praktyki
- Stosuj lambdy tylko dla bardzo prostych funkcji, zwykle tam gdzie użycie pełnej funkcji (z
def) byłoby niepotrzebnym formalizmem; - Unikaj lambd w przypadku skomplikowanej logiki – postaw wtedy na klasyczne funkcje dla zwiększenia czytelności kodu;
- Uważaj na zbyt długie wyrażenia lambda – im mniej złożona, tym łatwiejsza w utrzymaniu.
Funkcje lambda to praktyczne narzędzie Pythona, które pozwala pisać zwięzły kod, szczególnie przy pracy z kolekcjami i programowaniem funkcyjnym. Jednak warto je wykorzystywać z rozwagą – zawsze stawiając na czytelność i utrzymywalność kodu.