Lambda

Python SELF PL
Poziom 13 , Lekcja 2
Dostępny

2.1 Definicja funkcji lambda

Funkcje lambda, znane również jako anonimowe funkcje, to kompaktowe funkcje jednowierszowe bez nazwy, które można tworzyć za pomocą słowa kluczowego lambda.

W przeciwieństwie do zwykłych funkcji, definiowanych za pomocą def, funkcje lambda są tworzone na bieżąco i zazwyczaj używane do prostych operacji, które można wykonać w jednej linii.

Składnia funkcji lambda składa się ze słowa kluczowego lambda, po którym następują argumenty, dwukropek i wyrażenie:

 
lambda argumenty: wyrażenie
    

Funkcje lambda mogą przyjmować dowolną liczbę argumentów, ale mogą zawierać tylko jedno wyrażenie. Wartość tego wyrażenia jest automatycznie zwracana.

Przykłady:

Funkcja lambda Zwykła funkcja

square = lambda x: x ** 2
print(square(5))  # Wynik: 25
                    

def square(x):
    return x ** 2
print(square(5))  # Wynik: 25
                

sum = lambda a, b: a + b
            

def sum(a, b):
    return a + b
                

up = lambda s: s.upper()
            

def up(s):
    return s.upper()
                    

2.2 Zastosowanie funkcji lambda

Funkcje lambda są często używane w połączeniu z innymi funkcjami, takimi jak map(), filter() i sorted(), a także jako argumenty dla innych funkcji.

Użycie z map()

Funkcja map() stosuje zadaną funkcję do każdego elementu obiektu iterowalnego i zwraca iterator z wynikami. Funkcje lambda doskonale nadają się do użycia z map(), ponieważ pozwalają na zwięzłe określenie funkcji do przekształcenia elementów.


numbers = [1, 2, 3, 4, 5]
squared_numbers = list(map(lambda x: x ** 2, numbers))
print(squared_numbers)  # Wynik: [1, 4, 9, 16, 25]
        

Użycie z filter()

Funkcja filter() zwraca iterator złożony z elementów obiektu iterowalnego, dla których zadana funkcja zwraca True. Funkcje lambda umożliwiają szybkie określenie warunku do filtrowania.


numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
even_numbers = list(filter(lambda x: x % 2 == 0, numbers))
print(even_numbers)  # Wynik: [2, 4, 6, 8, 10]

Użycie z sorted()

Funkcja sorted() sortuje elementy obiektu iterowalnego. Funkcje lambda mogą być używane do określenia własnego kryterium sortowania za pomocą argumentu key.


words = ["banana", "apple", "cherry", "date"]
sorted_words = sorted(words, key=lambda x: len(x))
print(sorted_words)  # Wynik: ['date', 'apple', 'banana', 'cherry']
        

Funkcje lambda w wyrażeniach

Funkcje lambda można używać wewnątrz innych wyrażeń, takich jak wyrażenia listowe i generatory słowników.


pairs = [(1, 'one'), (2, 'two'), (3, 'three'), (4, 'four')]
pairs.sort(key=lambda pair: pair[1])
print(pairs)  # Wynik: [(4, 'four'), (1, 'one'), (3, 'three'), (2, 'two')]
        

2.3 Ograniczenia funkcji lambda

Funkcje lambda mają kilka ograniczeń w porównaniu do zwykłych funkcji:

Ograniczoność wyrażeniami:

Funkcje lambda mogą zawierać tylko jedno wyrażenie i nie mogą zawierać skomplikowanych operatorów, takich jak pętle lub operatory sterujące (na przykład if, else itd.).

Brak dokumentacji:

Funkcje lambda nie mogą zawierać ciągu dokumentacyjnego (docstring), co utrudnia dokumentowanie ich funkcji.

Ograniczone możliwości debugowania:

Z powodu braku nazwy i dokumentacji, funkcje lambda są trudniejsze do debugowania w porównaniu do zwykłych funkcji.

Przykład ograniczenia funkcji lambda

Próba użycia kilku wyrażeń wewnątrz funkcji lambda spowoduje błąd składniowy:


# Ten kod spowoduje błąd
invalid_lambda = lambda x: x ** 2; print(x)
        
    
Komentarze
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION