Funcții Python lambda cu exemple practice

Publicat: 2021-06-21

Funcțiile lambda Python sunt acele funcții care sunt mici și sunt definite fără nume. În python, cuvântul cheie „def” este folosit pentru a defini o funcție. Cu toate acestea, în cazul funcțiilor anonime, cuvântul cheie „lambda” este utilizat pentru a defini acele funcții. Prin urmare, numele „funcții lambda. S-ar putea să fie un nume sau să nu fie atribuit funcțiilor.

În comparație cu funcțiile obișnuite din python, funcțiile lambda sunt scurte.

Funcțiile lambda au fost adăugate la sintaxa limbajelor de programare precum Python, Java, C++, C# etc. pe care le au în sintaxa lor. În timp ce este folosit ca un concept de bază în Limbile ML sau LISP.

Articolul se va concentra pe conceptul de funcții lambda Python și utilizarea acestora.

Pe baza tipului de limbaj de programare, funcțiile lambda pot fi folosite în mod interschimbabil cu următorii termeni:

  • Funcții anonime
  • Funcții lambda
  • Expresii lambda
  • Abstracții lambda
  • Forma lambda
  • Literale de funcție

Cuprins

Calcul Lambda

Calculul lambda este un model de calcul pe baza căruia sunt construite expresiile lambda. Calculul lambda se bazează pe abstractizare pură și a fost oficializat de Alonzo Church. Cunoscută și sub denumirea de abstractizări lambda, se referă la modelul original creat de Alonzo Church.

Orice calcul poate fi codificat prin acest concept.

Sintaxa funcției lambda:

Următoarea sintaxă este utilizată în timpul utilizării funcțiilor lambda în python.

argumente lambda: expresie

Pot exista orice număr de argumente în funcția lambda din python . Dar funcțiile pot avea o singură expresie. Această expresie este mai întâi evaluată și apoi este returnată. Utilizarea funcțiilor lambda se află oriunde există o cerință a obiectelor funcție.

Luând în considerare un caz în care o funcție anonimă cu două argumente este definită cu lambda, dar nu este legată de nicio variabilă:

lambda x, y: x + y

Aici, cele două argumente sunt preluate de funcție și suma este returnată.

Există câteva caracteristici prezentate de o funcție lambda:

  • Nu poate exista nicio declarație în corpul funcției lambda, dar poate conține doar expresii.
  • Codul de execuție este doar o singură linie.
  • Adnotările de tip nu sunt acceptate de funcția lambda din python .
  • Este permisă invocarea imediată.

Declarațiile nu pot fi folosite

După cum am menționat, nu pot exista declarații în timp ce definiți funcțiile lambda. Dacă utilizatorul folosește instrucțiuni precum pass, return, raise sau assert, va exista o excepție SyntaxError. Rezultatul excepției poate fi afișat prin codul de mai jos

Sursă

În codul de mai sus, a rezultat o eroare de sintaxă când a fost analizat codul care conținea declarația assert în corpul funcției lambda.

Funcția lambda conține doar o singură expresie

Spre deosebire de toate funcțiile normale standard din python, o funcție lambda din python poate conține doar o singură expresie. Corpul funcției lambda poate avea expresia răspândită peste tot prin utilizarea mai multor linii cu paranteze. Cu toate acestea, rămâne încă ca o singură expresie.

Sursă

Șirul „impar” este returnat când există un argument „impar”, în timp ce șirul „par” este returnat atunci când există un argument „par”. Două linii sunt utilizate în codul de mai sus, deoarece sunt în paranteză. Dar rămâne ca o singură expresie.

Introduceți adnotări

Odată cu disponibilitatea „hinting de tip” în python, funcțiile normale sunt acum preferate față de funcțiile lambda din python. Odată cu disponibilitatea unor instrumente precum mypy, pyre etc., eroarea de tip poate fi detectată cu full_name(). Eroarea de sintaxă asociată cu funcția lambda este ridicată în timpul rulării.

Execuția funcției invocate imediat (IIFE)

Caracteristica nu poate fi utilizată în afara unui interpret Python. Definiția expresiei lambda în python poate fi transmisă la funcții de ordin superior, cum ar fi map(), etc.

Argumente într-o funcție lambda

Sunt acceptate diferite moduri în expresiile lambda Python pentru transmiterea argumentelor, cum ar fi:

  • Argumente poziționale
  • Argumente denumite, de asemenea, cunoscute ca argumente de cuvinte cheie
  • Listă variabilă de argumente, denumită și varargs.
  • Lista variabilă de argumente ale cuvintelor cheie
  • Argumente cu doar cuvinte cheie.

Decoratori într-o expresie Python Lambda

Decoratorul poate fi definit ca o implementare a unui model care permite adăugarea unui comportament la o clasă sau o funcție. Sintaxa lui @decorator este folosită ca prefix la o funcție pentru exprimarea unui decorator în python

Numai cu argumentul „Python”, decorated_function() este tipărit. Comportamentul suplimentar care este imprimat este „Apelarea funcției „decorated_function”.

Python permite adăugarea unui decorator la o funcție lambda, deși nu este necesară utilizarea sintaxei @decorator . Decoratorul acționează ca o funcție care apelează funcția lambda.

<lambda> apare acolo unde este identificată funcția lambda. În timp ce, în cazul unei funcții normale, adică add_two, este identificată clar.

În scopul depanării, funcțiile lambda pot fi decorate în acest fel.

Închidere

Closure() în python este definită ca o funcție în care variabilele libere, cu excepția parametrilor care sunt utilizați în funcție, sunt legate de valori specifice care sunt definite în domeniul de aplicare al funcției. Putem suna închiderile de oriunde. Funcțiile lambda din python pot acționa ca închideri într-un mod în care funcțiile normale acționează ca o închidere.

Utilizarea funcțiilor lambda

  • Ori de câte ori necesită utilizarea unei funcții pentru o perioadă mai scurtă de timp, funcțiile lambda sunt utilizate în acest caz.
  • Pentru trecerea funcțiilor la o funcție a unei funcții de ordin superior, se aplică funcții lambda. Funcțiile sunt transmise ca argumente acelor funcții de ordin superior.
  • Funcțiile lambda din python pot fi utilizate cu alte funcții încorporate, cum ar fi map(), etc.

Testarea funcțiilor lambda

Prin utilizarea modulelor doctest și unittest, funcțiile lambda din python pot fi testate:

  • Modulele Unittest testează funcțiile lambda ca și funcțiile obișnuite.
  • În cazul modulului doctest, codul python este extras din docstring , pentru executarea testului. Sintaxa funcției lambda nu permite docstring . Dar, un șir poate fi atribuit elementului _doc_ al lambda care este numit.

Exemple de funcții Python Lambda

În codul de mai jos, este definită o funcție cu numele „identitate” unde este returnat un argument. Este definită ca o funcție standard a python prin utilizarea cuvântului cheie „def”.

>>> def identitate (x);

….. întoarce x

Aici, x este luat ca argument de către funcția „identitate” și la invocare returnează argumentul.

Scrierea aceluiași cod folosind lambda va fi:

lambda x: x

Expresia constă din trei părți: Lambda ca cuvânt cheie, x care este apoi o variabilă legată și X care este corpul codului.

  • Variabila legată se referă la argumentul care este transmis unei funcții lambda. Totuși, variabilele libere sunt cele care nu sunt legate și pot fi referite în corpul expresiei. O constantă poate fi o variabilă liberă sau variabile care sunt definite în domeniul de aplicare al funcției.

Expresia de mai sus poate fi elaborată ca

>>> lambda x: x + 1

Aici, funcția adaugă 1 la argument. Funcția poate fi adăugată la un argument în timp ce înconjoară atât funcția cât și argumentul prin utilizarea parantezelor.

>>>(lambda x: x + 1)(2)

3

Pentru calcularea valorii într-o expresie, se aplică o strategie de reducere. Ca, în exemplul de mai sus, variabila legată „x” poate fi înlocuită cu argumentul 2.

(lambda x: x + 1 )(2) = Lambda 2: 2 + 1

= 2 + 1

= 3

Funcția lambda fiind o expresie, denumirea se poate face și codul de mai sus poate fi rescris ca

>>> add_one = Lambda x : x + 1

>>> add_one(2)

3

Acest lucru este echivalent cu scrierea:

def add_one(x):

returnează x + 1

Un singur argument este luat de funcțiile lambda. De asemenea, în timp ce definiți funcția lambda în python , nu există nicio paranteză în jurul funcțiilor.

Pentru a trece mai mult de un argument unei funcții lambda python , argumentele sunt listate și separate prin utilizarea unei virgule (,). Nu ar trebui să existe paranteze în timp ce enumerați argumentele. Un exemplu de funcții cu mai multe argumente este prezentat mai jos:

Aici, două argumente sunt luate de funcția lambda sub full_name. Un șir este returnat de funcția care interpolează primul și ultimii parametri. Codul arată că, în timp ce definiu funcțiile lambda, nu a fost folosită nicio paranteză. Apelarea funcției lambda urmează același mod ca cel al unei funcții standard în python, adică folosind paranteze care înconjoară argumentele.

Funcții lambda Python cu filter()

În python, funcția filter() acceptă un argument ca listă și funcție. Prin elementele listei se poate apela funcția care returnează o nouă listă de articole. Funcția pentru această listă nou creată este evaluată la True .

Mai jos este prezentat un exemplu de funcție filter() care este folosită pentru filtrarea numerelor pare conținute într-o listă.

Sursă

Rezultatul generat de program este noua listă: [4, 6, 8, 12].

Funcția lambda Python cu map()

O listă și o funcție sunt luate ca argument în funcția python map(). Toate elementele conținute în listă apelează funcția care returnează o listă nou creată cu elementele care sunt returnate de funcție.

Concluzie

Funcțiile lambda Python sunt acele funcții care sunt cu o singură linie și sunt declarate fără nume, adică o funcție anonimă. Mai multe numere de argumente pot fi transmise unei funcții lambda care poate avea o singură expresie. Uneori, funcția lambda poate fi transmisă altor funcții ca argument. Funcția atunci când este definită cu cuvântul cheie „def” în python se poate comporta ca o funcție obișnuită.

Prin urmare, articolul a explicat conceptele de funcții lambda în python, aplicarea lor cu alte funcții și, de asemenea, câteva exemple. Dacă sunteți interesat în continuare să obțineți experiență în limbajul de programare și să vă stăpâniți abilitățile de codificare, puteți verifica cursul „ Programul Executive PG în știința datelor ” oferit de upGrad . Este special conceput pentru toți profesioniștii de nivel entry-level cu vârsta cuprinsă între 21 și 45 de ani care doresc să-și atingă abilitățile de codificare în știința datelor. Dacă ești dispus să faci un pas către visele tale, vino în față și aruncă o privire asupra beneficiilor cursului. Cu proiecte practice în industrie, cursul oferit de IIIT-B este conceput pentru a vă satisface nevoile și pentru a vă pregăti pentru industriile de top viitoare.

Care este diferența dintre o funcție normală și o funcție lambda?

Știm că o funcție în Python este definită folosind cuvântul cheie def. În mod similar, o funcție lambda este definită folosind cuvântul cheie lambda. Luați în considerare exemplul de mai jos pentru a înțelege profund diferența dintre cele două:
# Funcția normală def sq(x): return x*x # Funcția lambda lambda_sq = lambda x: x*x # Apelarea în mod normal # Funcție definită print(sq(10)) # folosind funcția lambda print(lambda_sq(10)) }
Exemplul de mai sus ilustrează 2 funcții care calculează pătratul unui număr. Fără lambda, trebuie să creăm o funcție sq(x) și apoi să returnăm pătratul. Pe de altă parte, cu lambda, întreaga funcție a fiert la o singură linie. Lambda nu necesită o declarație de returnare.