Funkcje Lambda w Pythonie: przewodnik po funkcjach anonimowych
Dowiedz się, jak pisać anonimowe funkcje lambda w Pythonie. Opanuj wzorce programowania funkcjonalnego za pomocą map(), filter() i sorted() ze składnią lambda.
Przegląd
W Pythonie funkcje lambda — znane również jako funkcje anonimowe — to małe, szybkie, jednowierszowe funkcje, które nie wymagają standardowego słowa kluczowego „def” ani formalnej nazwy. Są przeznaczone do tymczasowego i szybkiego użycia, umożliwiając bezpośrednie przekazywanie logiki funkcjonalnej jako argumentu. Dzięki temu Twój kod jest bardziej zwarty, co zmniejsza obciążenie związane z pisaniem pełnoprawnych funkcji pomocniczych, które są wywoływane tylko w jednym miejscu.
Składnia funkcji lambda jest prosta: `argumenty lambda: wyrażenie`. W przeciwieństwie do standardowych funkcji, lambda nie ma wyraźnej instrukcji „return”; wyrażenie jest oceniane i zwracane automatycznie. Co więcej, funkcje lambda są ograniczone do pojedynczego wyrażenia, co oznacza, że nie można w nich pisać złożonych, wielowierszowych pętli, przypisań ani bloków warunków, co wymusza czyste i funkcjonalne podejście.
Funkcje lambda są powszechnie używane w połączeniu z wbudowanymi funkcjami wyższego rzędu, takimi jak „map()” (która stosuje funkcję do każdego elementu na liście), „filter()” (która zachowuje elementy spełniające warunek) i „sorted()” (która sortuje elementy przy użyciu niestandardowego klucza sortowania). Na przykład sortowanie listy słowników według określonego klucza słownika jest proste, jeśli używasz lambdy jako klucza sortowania. Zrozumienie funkcji lambda daje Ci istotne narzędzie do pisania czystego kodu w Pythonie.
Dane wyjściowe kodu i wykonania
Sortowanie złożonych list słowników i filtrowanie zbiorów danych przy użyciu wbudowanych funkcji anonimowych.
# Sorting using lambda
students = [
{"name": "Alice", "grade": 88},
{"name": "Bob", "grade": 95},
{"name": "Charlie", "grade": 90}
]
# Sort students by grade (descending)
sorted_students = sorted(students, key=lambda s: s["grade"], reverse=True)
print("Sorted students by grade:")
for student in sorted_students:
print(f"- {student['name']}: {student['grade']}")
# Filtering using lambda
numbers = [1, 2, 3, 4, 5, 6, 7, 8]
odd_numbers = list(filter(lambda x: x % 2 != 0, numbers))
print(f"\nOdd numbers: {odd_numbers}")Sorted students by grade:
- Bob: 95
- Charlie: 90
- Alice: 88
Odd numbers: [1, 3, 5, 7]Wdrażanie krok po kroku
- Przekazywanie niestandardowych kryteriów sortowania do list.sort() i sorted()
- Stosowanie transformacji wbudowanych w potokach analizy danych
- Definiowanie szybkich wywołań zwrotnych w aplikacjach interfejsu użytkownika sterowanych zdarzeniami
Często zadawane pytania
Czy funkcja lambda może przyjmować wiele argumentów?
Tak, możesz zdefiniować wiele argumentów oddzielonych przecinkami, np. lambda x, y: x + y.
Dlaczego funkcje lambda nazywane są anonimowymi?
Ponieważ są one tworzone bez wiązania nazwy, w przeciwieństwie do funkcji def, które rejestrują określoną nazwę w lokalnej przestrzeni nazw.
Powiązane tematy
Opanuj funkcje Pythona. Dowiedz się, jak pisać kod wielokrotnego użytku za pomocą def, definiować argumenty, zwracać wartości i rozumieć zakres lokalnie i globalnie.
Rozumienia języka PythonPisz czyściej i szybciej w Pythonie. Lista główna, słownik i zestawienia wyrażeń z praktycznymi przykładami, warunkami filtrowania i zagnieżdżonymi pętlami.
Polecane zasoby Pythona
Poszerzaj swoją wiedzę dzięki powiązanym interaktywnym samouczkom, ściągawkom i porównaniom kodów.
Jak korzystać z funkcji Lambda w Pythonie
Dowiedz się, jak używać funkcji lambda w Pythonie. Opanuj anonimowe funkcje, wbudowane wywołania zwrotne i sortowanie danych list za pomocą kluczy lambda.
Ściągawka dotycząca metod ciągów w Pythonie
Kompletny przewodnik dotyczący manipulacji ciągami znaków w języku Python. Opanuj formatowanie, wyszukiwanie, dzielenie, zastępowanie i sprawdzanie właściwości ciągów.
Python kontra JavaScript: który język programowania jest najlepszy?
Kompleksowe porównanie Pythona i JavaScript. Poznaj różnice w składni, wydajność, przypadki użycia (backend vs frontend) i przykłady kodowania.