
Owen Little
0
3814
540
Lambdy w Pythonie są jedną z najbardziej przydatnych, ważnych i interesujących funkcji, o których warto wiedzieć. Niestety łatwo je również źle zrozumieć i pomylić.
W tym artykule wyjaśnimy wszystko, co musisz wiedzieć o tych tajemniczych funkcjach, jak ich używać i dlaczego są one przydatne.
Zanim przejdziesz do tych praktycznych przykładów, możesz skonfigurować środowisko wirtualne Python. Dowiedz się, jak korzystać ze środowiska wirtualnego Python. Dowiedz się, jak korzystać ze środowiska wirtualnego Python. Niezależnie od tego, czy jesteś doświadczonym programistą Python, czy dopiero zaczynasz, uczysz się, jak konfiguracja środowiska wirtualnego jest niezbędna w każdym projekcie Python. . Jeśli nawet nie chcesz tego robić, powinieneś przynajmniej spróbować tych przykładów z interaktywną powłoką online Pythona Wypróbuj Python w przeglądarce za pomocą tych bezpłatnych interaktywnych powłok online Wypróbuj Python w przeglądarce za pomocą tych bezpłatnych interaktywnych powłok online Czy „ przeglądając te przykłady w Pythonie lub przeglądając podstawy tablic i list, możesz przetestować kod bezpośrednio w przeglądarce. Oto najlepsze znalezione przez nas internetowe interpretatory języka Python. .
Co to jest Lambda w Pythonie?
Lambda jest po prostu sposobem na zdefiniowanie funkcji w Pythonie. Czasami są znane jako “operatory lambda” lub “funkcje lambda”.
Jeśli korzystałeś wcześniej z Pythona, prawdopodobnie zdefiniowałeś swoje funkcje za pomocą def słowo kluczowe i do tej pory działało dobrze. Więc dlaczego istnieje inny sposób na zrobienie tego samego?
Różnica polega na tym, że funkcje lambda są anonimowe. Oznacza to, że są to funkcje, których nie trzeba nazywać. Służą do tworzenia małych, jednorazowych funkcji w przypadkach, gdy a “real” funkcja byłaby zbyt duża i nieporęczna.
Lambdas zwracają obiekt funkcji, który można przypisać do zmiennej. Lambda mogą mieć dowolną liczbę argumentów, ale mogą mieć tylko jedno wyrażenie. Nie można wywoływać innych funkcji w lambdach.
Najczęstszym zastosowaniem funkcji lambda jest kod, który wymaga prostej funkcji jednowierszowej, gdzie napisanie kompletnej normalnej funkcji byłoby przesadą. Jest to omówione bardziej szczegółowo poniżej, pod “Co z mapą, filtrowaniem i zmniejszaniem?”.
Jak korzystać z Lambdas w Pythonie
Zanim spojrzymy na funkcję lambda, spójrzmy na super podstawową funkcję zdefiniowaną “tradycyjny” droga:
def add_five (liczba): zwraca liczbę + 5 wydruków (add_five (number = 4))
Ta funkcja jest bardzo podstawowa, ale służy do zilustrowania lambdas. Twoje mogą być bardziej złożone niż to. Ta funkcja dodaje pięć do dowolnej liczby przekazywanej do niej przez numer parametr.
Oto jak wygląda funkcja lambda:
add_five = liczba lambda: liczba + 5 wydruków (add_five (number = 4))
Zamiast używać def, słowo lambda jest używany. Nawiasy klamrowe nie są wymagane, ale wszelkie słowa występujące po lambda słowo kluczowe są tworzone jako parametry. Dwukropek służy do oddzielenia parametrów i wyrażenia. W tym przypadku wyrażenie to liczba + 5.
Nie ma potrzeby korzystania z powrót słowo kluczowe - lambda robi to automatycznie.
Oto jak utworzysz funkcję lambda z dwoma argumentami:
add_numbers_and_five = lambda number1, number2: number1 + number2 + 5 print (add_numbers_and_five (number1 = 4, number2 = 3))
Jeśli nadal nie masz pewności co do punktu lambdas, w następnej sekcji znajdziesz informacje, które pomogą ci zobaczyć światło.
Python Lambdas z mapą, filtrem i redukcją
Biblioteka rdzenia Pythona ma trzy metody o nazwie mapa, zmniejszyć, i filtr. Te metody są prawdopodobnie najlepszym powodem do korzystania z funkcji lambda.
The mapa funkcja oczekuje dwóch argumentów: funkcji i listy. Pobiera tę funkcję i stosuje ją do każdego elementu na liście, zwracając listę zmodyfikowanych elementów jako obiekt mapy. The lista Funkcja służy do ponownej konwersji wynikowego obiektu mapy z powrotem na listę.
Oto jak korzystać z mapy bez lambda:
list1 = [2, 4, 6, 8] print (list1) def add_five (number): return number + 5 new_list = list (map (add_five, list1)) print (new_list)
Ta funkcja mapy jest całkiem przydatna, ale może być lepsza. add_five funkcja jest przekazywana jako argument, ale co jeśli nie chcesz tworzyć funkcji za każdym razem, gdy korzystasz z mapy? Zamiast tego możesz użyć lambda!
Oto jak wygląda ten sam kod, tylko z funkcją zastąpioną przez lambda:
list1 = [2, 4, 6, 8] drukuj (lista1) nowa_lista = lista (mapa (lambda x: x + 5, lista1)) drukuj (nowa_lista)
Jak widać całość add_five funkcja nie jest już wymagana. Zamiast tego funkcja lambda służy do utrzymywania porządku.
Z filtr funkcja jest bardzo podobna. Filtr przyjmuje funkcję i stosuje ją do każdego elementu na liście i utworzył nową listę zawierającą tylko elementy, które spowodowały, że funkcja zwróciła True.
Po pierwsze, bez lambdas:
liczby = [1, 4, 5, 10, 20, 30] drukuj (liczby) def )
Nie ma nic złego w tym kodzie, ale robi się on trochę długi. Zobaczmy, ile wierszy lambda może usunąć:
liczby = [1, 4, 5, 10, 20, 30] drukuj (liczby) nowe_numery = lista (filtr (lambda x: x> 10, liczby)) drukuj (nowe_numery)
Funkcja lambda zastąpiła potrzebę całości greater_than_ten_func! Dokonano tego w pięciu prostych słowach. Właśnie dlatego lambdas są potężne: zmniejszają bałagan przy prostych zadaniach.
Na koniec spójrzmy na zmniejszyć. Reduce to kolejna fajna funkcja Pythona. Stosuje obliczenia kroczące do wszystkich pozycji na liście. Możesz użyć tego do zsumowania sumy lub pomnożyć wszystkie liczby razem:
z importu funkools zmniejsz liczby = [10, 20, 30, 40] wydrukuj (liczby) zdefiniuj lato (a, b): zwróć wynik a + b = zmniejsz (lato, liczby) wydrukuj (wynik)
Ten przykład musi zostać zaimportowany zmniejszyć z Funools moduł, ale nie martw się, moduł Funools jest częścią biblioteki rdzenia Pythona.
Historia jest bardzo podobna do lambdy, nie ma potrzeby używania funkcji:
z importu funkools zmniejsz liczby = [10, 20, 30, 40] wydrukuj (liczby) wynik = zmniejsz (lambda a, b: a + b, liczby) wydrukuj (wynik)
Rzeczy, na które należy zwrócić uwagę w przypadku Python Lambdas
Te przykłady pokazały, jak łatwe są funkcje lambda wraz z mapowaniem, filtrowaniem i redukowaniem z biblioteki rdzenia Pythona. Mimo to istnieje kilka zastosowań, w których funkcje lambda nie pomagają.
Jeśli wykonujesz coś więcej niż podstawowe zadanie lub chcesz wywołać inne metody, użyj normalnej funkcji. Lambda świetnie nadają się do jednorazowych, anonimowych funkcji, ale muszą mieć tylko jedno wyrażenie. Jeśli twoja lambda zaczyna wyglądać jak wyrażenie regularne, prawdopodobnie nadszedł czas, aby przejść do specjalnej metody.
Aby uzyskać więcej wskazówek, zapoznaj się z naszym przewodnikiem po programowaniu obiektowym w języku Python. Przewodnik dla początkujących po programowaniu obiektowym w języku Python Przewodnik dla początkujących po programowaniu obiektowym w języku Python Aby w pełni skorzystać z zalet języka Python, zapoznaj się z jego działaniami programowanie obiektowe (OOP). i zapoznaj się z naszym przewodnikiem FAQ dla początkujących w języku Python Najczęściej zadawane pytania dotyczące programowania w języku Python Najczęściej zadawane pytania dotyczące programowania w języku Python W tym artykule przeprowadzimy Cię przez wszystko, co musisz wiedzieć o języku Python jako początkujący. .