Pythonowe funkcje lambda z przykładami

Opublikowany: 2022-06-04

Spis treści

Python — wprowadzenie

Python to język programowania ogólnego przeznaczenia, który jest niezwykle popularny. Jest to interpretowany język wysokiego poziomu, który kładzie nacisk na czytelność kodu za pomocą znacznego wcięcia. Python jest używany przez programistów do pisania czystych, logicznych kodów dla projektów o dowolnej skali.

Python został wymyślony w latach 80. jako następca języka programowania ABC przez Guido Van Rossuma. Od tego czasu Python pozostaje popularnym językiem programowania ze względu na swoją wszechstronność.

Funkcje — wprowadzenie

Funkcje to bloki kodu, które działają po wywołaniu, mogą być wywołane n razy w programie. Są to instrukcje kodu strukturalnego, które pełnią określoną funkcję i mogą być używane w dowolnym momencie. Funkcje są zasadniczo klasyfikowane jako:

  • Funkcja zdefiniowana przez użytkownika (USF) — konfigurowalne funkcje, które można zmieniać zgodnie z wymaganiami programisty.
  • Funkcje wbudowane (BIF) — funkcje, których nie można dostosować i które muszą być używane w sposób, w jaki są dostępne.

Ucz się kursów Data Science online na upGrad

Funkcje lambda w Pythonie

Funkcje Lambda Pythona są zasadniczo anonimowe, ponieważ nie mają określonej nazwy. Funkcja def jest używana do oznaczenia normalnej funkcji w Pythonie. Tymczasem słowo kluczowe Lambda służy do definiowania anonimowej funkcji Pythona.

Funkcja Lambda to mała funkcja, która może przyjmować kilka argumentów, ale tylko jedno wyrażenie. Mają też bardziej restrykcyjną, ale zwięzłą składnię niż zwykłe funkcje Pythona. Funkcja lambda została dodana do języka Python w 1994 roku wraz z funkcjami map (), filter () i Reduce ().

Sprawdź nasze amerykańskie programy nauki o danych

Profesjonalny program certyfikacji w dziedzinie nauki o danych i analityki biznesowej Master of Science in Data Science Master of Science in Data Science Zaawansowany program certyfikacji w nauce o danych
Program Executive PG w dziedzinie nauki o danych Kurs programowania w Pythonie Profesjonalny program certyfikatów w dziedzinie nauki o danych do podejmowania decyzji biznesowych Zaawansowany program w dziedzinie nauki o danych

Aby zdefiniować funkcję anonimową, należy użyć słowa kluczowego lambda, takiego jak def jest używane dla normalnych funkcji. Istnieją trzy części anonimowej funkcji zdefiniowanej w Pythonie:

  • Słowo kluczowe lambda
  • Parametry lub zmienna związana
  • Organ funkcyjny

Składnia

Składnia funkcji lambda jest następująca:

Lambda p1, p2: wyrażenie

Parametry p1 i p2 są tutaj. Nie ma ograniczeń dotyczących dodawania parametrów w funkcji lambda. Możesz dodać tyle lub tyle, ile chcesz. Ale funkcja lambda jest ograniczona składniowo do jednego wyrażenia.

Przykłady funkcji lambda w Pythonie:

Przykład 1

x =”Funkcja Lambda”

# lambda przechodzi do druku

(lambda x : drukuj(x))(x)

Wyjście

Funkcja lambda

Przykład 2

x = lambda a : a + 10

drukuj(x(5))

Wyjście

15

Nasi uczniowie czytają również: Ucz się Pythona online za darmo

Różnice między funkcją normalną a funkcją lambda

Funkcja lambda ma pewne różnice składniowe niż normalne funkcje.

  • W treści używane są tylko wyrażenia, a nie instrukcje. Jeśli użyte zostaną jakiekolwiek instrukcje, takie jak pass, Assert, Return lub Raise, dane wyjściowe pokażą SyntaxError.

Przykład

>>> (lambda x: asercja x == 2)(2)

Plik „<wejście>”, wiersz 1

(lambda x: asercja x == 2)(2)

^

SyntaxError: nieprawidłowa składnia

  • Funkcja lambda może istnieć tylko jako pojedyncze wyrażenie. Nawet jeśli wyrażenie jest rozłożone w treści przy użyciu wielu ciągów, może pozostać tylko jako pojedyncze wyrażenie.

Przykład :

>>> (lambda x:

… (x % 2 i „nieparzyste” lub „parzyste”))(3)

'dziwne'

Gdy argument lambda jest nieparzysty, kod zwraca ciąg nieparzysty, a nawet, gdy tak nie jest. Kod rozciąga się na dwa wiersze, ponieważ znajduje się w nawiasach, ale pozostaje pojedynczym wyrażeniem.

  • Funkcja lambda nie obsługuje adnotacji typu. Dodanie adnotacji do składni lambda spowoduje błąd Syntaxerror.
  • IIFE lub natychmiastowo wywołane wyrażenie funkcji to funkcja wykonywana natychmiast po jej zdefiniowaniu. Jest również znany jako samoczynna funkcja anonimowa. IIFE jest bezpośrednią konsekwencją funkcji lambda, ponieważ funkcja lambda jest wywoływalna tak, jak jest zdefiniowana.

Przyjrzyjmy się teraz kluczowym różnicom między normalnymi funkcjami a funkcjami lambda:

(Źródło)

Funkcje lambda – plusy i minusy

Plusy

  • Sprawia, że ​​kod jest bardziej czytelny.
  • Idealny do funkcji używanych jednorazowo.
  • Łatwy do zrozumienia i może być używany do prostych wyjaśnień logicznych.

Cons:

  • Nie można wykonać wielu niezależnych wyrażeń.
  • Używanie funkcji lambda nie jest idealne, jeśli kod obejmuje więcej niż jedną linię w normalnej funkcji (def).
  • Wszystkie wejścia, wyjścia i operacje nie mogą być wyjaśnione w ciągu dokumentacyjnym, tak jak w normalnej funkcji.

Gdzie stosować Lambdy?

Mimo że normalne funkcje def i funkcje lambda mają kluczowe różnice, wewnętrznie są traktowane wewnętrznie.

  • Powszechnym zastosowaniem funkcji lambda w Pythonie jest programowanie funkcjonalne. Możesz użyć lambdy w programowaniu funkcjonalnym, aby dostarczyć funkcję jako parametr do innej funkcji.
  • Jeśli potrzebujesz zmniejszyć liczbę wierszy, aby określić funkcję, lambdy są dobrym rozwiązaniem.
  • Lambda jest również używana z funkcjami wyższego rzędu, takimi jak map(), Reduce() itp.
  • Reakcja na zdarzenia struktury interfejsu użytkownika może być śledzona za pomocą funkcji lambda.

Gdzie powstrzymać się od używania funkcji lambda?

  • Pisanie skomplikowanych funkcji lambda nie jest dobrą praktyką, ponieważ będzie trudno je odszyfrować.
  • Powstrzymaj się od używania funkcji lambda do operacji cyklicznych.
  • Jeśli kod nie jest zgodny z przewodnikiem po stylach Pythona (PEP8).

Funkcje lambda są testowane dokładnie tak, jak zwykłe funkcje. W tym celu można użyć zarówno unittest, jak i doctest.

Przeczytaj nasze popularne artykuły dotyczące nauki o danych w Stanach Zjednoczonych

Kurs analizy danych z certyfikacją Darmowy kurs JavaScript z certyfikatem Najczęściej zadawane pytania i odpowiedzi dotyczące wywiadów w Pythonie
Pytania i odpowiedzi podczas wywiadu z analitykiem danych Najlepsze opcje kariery w dziedzinie nauki o danych w USA [2022] SQL vs MySQL – jaka jest różnica
Kompletny przewodnik po typach danych Wynagrodzenie programisty Pythona w USA Wynagrodzenie analityka danych w USA: średnia pensja

Funkcja lambda z filtrem()

Filter() to wbudowana funkcja Pythona i lista jako argumenty. Filtr() jest używany, gdy wszystkie iterowalne elementy znajdują się na liście, a zwracana jest inna lista zawierająca elementy, dla których funkcja ma wartość true.

Przykład :

# Kod Pythona do zilustrowania

# filter() z lambda()

li = [5, 7, 22, 97, 54, 62, 77, 23, 73, 61]

lista_końcowa = lista(filtr(lambda x: (x%2 != 0) , li))

drukuj(final_list)

Wyjście:

[5, 7, 97, 77, 23, 73, 61]

(źródło)

Przykład :

# Program do filtrowania tylko parzystych pozycji z listy

moja_lista = [1, 5, 4, 6, 8, 11, 3, 12]

nowa_lista = lista(filtr(lambda x: (x%2 == 0) , moja_lista))

drukuj(nowa_lista)

Wyjście

[4, 6, 8, 12]

Funkcja lambda z map()

Funkcja map jest używana, gdy wszystkie elementy znajdują się na liście, a lista jest zwracana z elementami zwróconymi przez tę funkcję dla każdego elementu.

Przykład : Aby podwoić wartość każdej pozycji na liście, kod wygląda następująco:

moja_lista = [1, 5, 4, 6, 8, 11, 3, 12]

nowa_lista = lista(mapa(lambda x: x * 2 , moja_lista))

drukuj(nowa_lista)

Wyjście:

[2, 10, 8, 12, 16, 22, 6, 24]

Przykład : aby poszerzyć każdą liczbę na liście, kod wygląda następująco

lista_1 = [1,2,3,4,5,6,7,8,9]

sześcian = mapa(lambda x: pow(x,3), lista_1)

lista (w kostkach)

Wyjście:

[1, 8, 27, 64, 125, 216, 343, 512, 729]

Funkcja lambda z funkcją Reduce()

Funkcja Reduce() w Pythonie jest listą i argumentem. Jest wywoływany, aby zwrócić iterowalną i nową zredukowaną listę. Jest nieco podobny do funkcji dodawania.

Przykład 1

Uwaga: ten przykład pochodzi z biblioteki functools.

Aby uzyskać sumę listy, kod będzie następujący:

# Kod Pythona do zilustrowania

# Reduce() z lambda()

# aby uzyskać sumę listy

z functools import zmniejsz

li = [5, 8, 10, 20, 50, 100]

suma = zmniejsz ((lambda x, y: x + y), li)

drukuj (suma)

Wyjście:

193

Wniosek

Wykorzystanie funkcji lambda w Pythonie od dawna jest kontrowersyjnym tematem wśród programistów. Chociaż prawdą jest, że lambdy można zastąpić funkcjami wbudowanymi, listami składanymi i standardowymi bibliotekami, konieczne jest również zrozumienie funkcji lambda. Pomaga zrozumieć podstawowe zasady programowania i pisać lepsze kody.

Nawet jeśli osobiście nie używasz funkcji lambda, mogą wystąpić przypadki, w których możesz natknąć się na nie w programach innych osób. Tak więc i tak zaleca się posiadanie podstawowej wiedzy o funkcjach lambda.

Jeśli chcesz nauczyć się języka Python w pełnym zakresie i rozwinąć swoją karierę w dziedzinie nauki o danych i analityki biznesowej, najlepszym rozwiązaniem będzie internetowy Program Certyfikatów Profesjonalnych w zakresie Nauki o Danych i Analityki Biznesowej upGrad prowadzony przez Top US University – University of Maryland.

Program oferuje możliwość studiowania na jednym ze 100 najlepszych światowych uniwersytetów i zdobycia certyfikatu od Maryland Smith, aby zwiększyć swoje szanse na sukces w tej dziedzinie. Jest to 9-miesięczny kurs z dostępem do ponad 300 partnerów rekrutacyjnych, gwarantowanymi rozmowami kwalifikacyjnymi dla nowicjuszy i sześcioma rozmowami mentorskimi.

Czym są dekoratory w Pythonie?

Funkcja w Pythonie, która pobiera argument jednej funkcji i zwraca inną funkcję, nazywa się dekoratorem. Jest oznaczony składnią dekoratora. Dekoratory mogą być stosowane w funkcjach lambda, ale nie w składni dekoratora. Jest zwykle implementowany w celach debugowania. Alternatywnie funkcja lambda może być użyta jako dekorator, ale nie jest to zalecane.

Jakie są argumenty w funkcjach Lambda Pythona?

Funkcje lambda, takie jak normalne funkcje def, obsługują różne sposoby przekazywania argumentów. Należą do nich: Argument tylko słowa kluczowego Argumenty słowa kluczowego/ Argumenty nazwane Varargs/ Zmienna lista argumentów Zmienna lista argumentów słów kluczowych.

Czym są domknięcia w funkcjach Lambda Pythona?

Domknięcia lub domknięcia leksykalne to funkcje, w których każda wolna zmienna poza parametrami jest powiązana z określoną wartością w zakresie obejmującym funkcję. Zamknięcia można wywoływać z dowolnego miejsca. Funkcje lambda, takie jak normalne funkcje def, mogą być domknięciami.