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.

Spróbuj w Edytorze

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.

lambda_demo.py
Spróbuj w Edytorze
# 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}")
Wyjście terminala
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

Polecane zasoby Pythona

Poszerzaj swoją wiedzę dzięki powiązanym interaktywnym samouczkom, ściągawkom i porównaniom kodów.