Un ghid al începătorului pentru înțelegerea funcțiilor Python Lambda
Lambdas în Python sunt una dintre cele mai utile, importante și interesante caracteristici pe care trebuie să le cunoașteți. Din nefericire, ele sunt, de asemenea, ușor de înțeles și de a greși.
În acest articol, vom explica tot ce trebuie să știți despre aceste funcții misterioase, cum să le folosiți și de ce sunt utile.
Înainte de a vă scufunda în aceste exemple practice, vă recomandăm să configurați un mediu virtual Python Aflați cum să utilizați mediul virtual Python Aflați cum să utilizați mediul virtual Python Fie că sunteți un dezvoltator experimentat Python, fie că începeți să învățați cum pentru a configura un mediu virtual este esențial pentru orice proiect Python. Citeste mai mult . Dacă nici nu doriți să faceți acest lucru, atunci ar trebui să încercați cel puțin aceste exemple cu o coajă interactivă online Python Încercați Python în browserul dvs. Cu aceste Shell-uri interactive online gratuite Încercați Python în browserul dvs. Cu aceste Shell-uri interactive online gratuite Fie că sunteți " trecând prin aceste exemple Python sau revizuind elementele de bază ale tabelelor și a listelor, puteți testa codul chiar în browser. Iată cele mai bune interpreți Python online pe care le-am găsit. Citeste mai mult .
Ce este o Lambda în Python?
O lambda este pur și simplu o modalitate de a defini o funcție în Python. Ele sunt uneori cunoscute sub numele de “operatori lambda” sau “funcțiile lambda”.
Dacă ați folosit Python înainte, probabil că ați definit funcțiile utilizând def cuvânt cheie, și a funcționat bine pentru dvs. până acum. Deci, de ce există un alt mod de a face același lucru?
Diferența este că funcțiile lambda sunt anonime. Înseamnă că acestea sunt funcții care nu trebuie să fie numite. Ele sunt folosite pentru a crea funcții mici, unice în cazurile în care a “real” funcția ar fi prea mare și voluminos.
Lambdas returnează un obiect de funcție, care poate fi atribuit unei variabile. Lambdas poate avea orice număr de argumente, dar poate avea doar o singură expresie. Nu puteți apela alte funcții în interiorul lambdas.
Cea mai obișnuită utilizare pentru funcțiile lambda este codul care necesită o funcție simplă de o singură linie, în care ar fi prea mult să scrie o funcție normală completă. Acest lucru este prezentat mai detaliat mai jos, la secțiunea “Ce este vorba despre hartă, filtrare și reducere?”.
Cum se utilizează Lambda în Python
Înainte de a uita la o funcție lambda, să aruncăm o privire asupra unei funcții super-elementare definită “tradiţional” cale:
def add_five (număr): return numărul + 5 print (add_five (number = 4))
Această funcție este foarte de bază, dar servește pentru a ilustra lambda. A ta poate fi mai complexă decât asta. Această funcție adaugă cinci la orice număr trecut prin ea număr parametru.
Iată cum arată o funcție lambda:
add_five = numărul lambda: numărul + 5 print (add_five (number = 4))
Mai degrabă decât utilizarea def, cuvantul lambda este folosit. Nu sunt necesare paranteze, ci toate cuvintele care urmează lambda cuvinte cheie sunt create ca parametri. Colonul este folosit pentru a separa parametrii și expresia. În acest caz, expresia este numărul + 5.
Nu este nevoie să utilizați întoarcere cuvânt cheie-lambda face acest lucru pentru tine în mod automat.
Iată cum ați crea o funcție lambda cu două argumente:
add_numbers_and_five = lambda numărul1, numărul2: numărul1 + numărul2 + 5 print (add_numbers_and_five (number1 = 4, number2 = 3))
Dacă încă nu sunteți sigur în ceea ce privește punctul de lambda, următoarea secțiune se va arunca cu capul în jos și vă va ajuta să vedeți lumina.
Python Lambdas Cu hartă, filtrare și reducere
Biblioteca de bază Python are trei metode numite Hartă, reduce, și filtru. Aceste metode sunt probabil cele mai bune motive pentru a utiliza funcțiile lambda.
Hartă funcția așteaptă două argumente: o funcție și o listă. Aceasta ia această funcție și o aplică la fiecare element din listă, returnând lista de elemente modificate ca obiect de hartă. listă funcția este utilizată pentru a transforma din nou obiectul de hartă rezultat într-o listă din nou.
Iată cum să utilizați harta fără o lambda:
listă1 = [2, 4, 6, 8] imprimare (list1) def add_five (număr): return număr + 5 new_list = listă (add_five, list1)
Această funcție de hartă este destul de la îndemână, dar ar putea fi mai bună. add_five funcția este transmisă ca argument, dar dacă nu doriți să creați o funcție de fiecare dată când utilizați harta? În schimb, puteți folosi o lambda!
Iată cum arată același cod, numai cu funcția înlocuită de o lambda:
listă1 = [2, 4, 6, 8] imprimare (list1) new_list = lista (harta (lambda x: x + 5, list1)
După cum puteți vedea, întregul add_five funcția nu mai este necesară. În schimb, funcția lambda este folosită pentru a menține lucrurile în ordine.
Cu filtru funcția, procesul este la fel. Filtru ia o funcție și o aplică la fiecare elemen dintr-o listă și creează o listă nouă cu numai elementele care au determinat funcția să se întoarcă True.
Mai întâi, fără lambda:
numerele = [1, 4, 5, 10, 20, 30] imprimați (numere) def greater_than_ten_func (număr) )
Nu este nimic în neregulă cu acest cod, dar devine puțin lung. Să vedem câte linii poate elimina o lambda:
numere = [1, 4, 5, 10, 20, 30] imprimare (numere) new_numbers = listă (filtru (lambda x: x>
Funcția lambda a înlocuit nevoia întregului greater_than_ten_func! Și a făcut-o în cinci cuvinte simple. De aceea, lambda-urile sunt puternice: reduc dezordinea pentru sarcini simple.
În cele din urmă, să ne uităm reduce. Reduce este o altă funcție Python rece. Aplică un calcul de rulare pentru toate elementele dintr-o listă. Puteți utiliza acest lucru pentru a mări o sumă totală sau pentru a multiplica toate numerele împreună:
din functools import reduce numere = [10, 20, 30, 40] print (numere) def vara (a, b): return a + b rezultat = reduce (vara, numere)
Acest exemplu trebuie importat reduce de la functools modulul, dar nu vă faceți griji, modulul functools face parte din biblioteca de bază Python.
Povestea este la fel de aceeași cu o lambda, nu este nevoie de o funcție:
de la functools import reduce numere = [10, 20, 30, 40] print (numere) result = reduce (lambda a, b: a + b, numere)
Lucruri de care ai grija cu Python Lambdas
Aceste exemple au arătat cât de ușor sunt funcțiile lambda, împreună cu hartă, filtrare și reducere, din biblioteca de bază Python. Totuși, există câteva utilizări în care funcțiile lambda nu ajută.
Dacă faci ceva mai mult decât o sarcină de bază sau vrei să apelezi alte metode, folosește o funcție normală. Lambdas sunt minunate pentru funcții anonime, dar trebuie să aibă doar o singură expresie. Dacă lambda dvs. începe să arate ca o expresie regulată, atunci este probabil timpul să refactor într-o metodă dedicată.
Pentru mai multe sfaturi, consultați ghidul nostru de programare orientată pe obiecte în Python Ghidul începătorului pentru programarea orientată pe obiecte Python Ghidul începătorului pentru programarea orientată pe obiecte Python Pentru a profita din plin de punctele forte ale Python, veți dori să aflați cum funcționează Python programarea orientată pe obiecte (OOP). Citiți mai multe și consultați ghidul nostru de întrebări frecvente pentru începători Python Întrebările cele mai frecvente despre programarea Python Întrebările cele mai frecvente despre programarea Python În acest articol, vă vom învăța tot ce trebuie să știți despre Python ca începător. Citeste mai mult .
Explorați mai multe despre: Coding Tutorials, Python.