Un ghid pentru începători pentru înțelegerea funcțiilor Python Lambda

Un ghid pentru începători pentru înțelegerea funcțiilor Python Lambda

Lambdas în Python sunt una dintre cele mai utile, importante și interesante caracteristici de știut. Din păcate, sunt ușor de înțeles greșit și greșit.





În acest articol, vă vom explica tot ce trebuie să știți despre aceste funcții misterioase, cum să le utilizaț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. Dacă nici nu doriți să faceți acest lucru, atunci ar trebui cel puțin să încercați aceste exemple cu un shell interactiv Python online .





Ce este un Lambda în Python?

O lambda este pur și simplu o modalitate de a defini o funcție în Python. Uneori sunt cunoscuți ca „operatori lambda” sau „funcții lambda”.

Dacă ați folosit Python înainte, probabil că v-ați definit funcțiile folosind def cuvânt cheie și până acum a funcționat bine pentru dvs. Deci, de ce există un alt mod de a face același lucru?



Diferența este că funcțiile lambda sunt anonime. Adică, acestea sunt funcții care nu trebuie numite. Sunt folosite pentru a crea funcții mici, unice, în cazurile în care o funcție „reală” ar fi prea mare și voluminoasă.

Lambdas returnează un obiect funcțional, care poate fi atribuit unei variabile. Lambdas poate avea orice număr de argumente, dar nu poate avea decât o singură expresie. Nu puteți apela alte funcții în interiorul lambdas.





Cea mai obișnuită utilizare pentru funcțiile lambda este în codul care necesită o funcție simplă pe o singură linie, unde ar fi exagerat să scrieți o funcție normală completă. Acest lucru este prezentat mai detaliat mai jos, la „Ce se întâmplă cu harta, filtrul și reducerea?”.

Cum se folosește Lambdas în Python

Înainte de a analiza o funcție lambda, să ne uităm la o funcție super de bază definită în mod „tradițional”:





def add_five(number):
return number + 5

print(add_five(number=4))

Această funcție este foarte de bază, dar servește pentru a ilustra lambdas. A ta poate fi mai complexă decât aceasta. Această funcție adaugă cinci la orice număr care i se transmite prin număr parametru.

Iată cum arată o funcție lambda:

add_five = lambda number: number + 5

print(add_five(number=4))

Mai degrabă decât să folosiți def , cuvantul lambda este folosit. Nu sunt necesare paranteze, dar orice cuvinte care urmează lambda cuvintele cheie sunt create ca parametri. Colonul este utilizat pentru a separa parametrii și expresia. În acest caz, expresia este număr + 5 .

Nu este nevoie să folosiți întoarcere cuvânt cheie --- lambda face acest lucru automat pentru dvs.

Iată cum ați crea o funcție lambda cu două argumente:

numele fișierului este prea lung pentru a fi șters
add_numbers_and_five = lambda number1, number2: number1 + number2 + 5

print(add_numbers_and_five(number1=4, number2=3))

Dacă încă nu sunteți sigur cu privire la punctul lambdas, următoarea secțiune se va scufunda și vă va ajuta să vedeți lumina.

Python Lambdas cu hartă, filtru și reducere

Biblioteca de bază Python are trei metode numite Hartă , reduce , și filtru . Aceste metode sunt probabil cele mai bune motive pentru utilizarea funcțiilor lambda.

The Hartă funcția așteaptă două argumente: o funcție și o listă. Prinde acea funcție și o aplică fiecărui element din listă, returnând lista elementelor modificate ca obiect de hartă. The listă funcția este utilizată pentru a converti din nou obiectul hartă rezultat într-o listă.

Iată cum să utilizați harta fără lambda:

list1 = [2, 4, 6, 8]
print(list1)
def add_five(number):
return number + 5

new_list = list(map(add_five, list1))
print(new_list)

Această funcție de hartă este destul de utilă, dar ar putea fi mai bună. the 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? Puteți folosi în schimb o lambda!

Iată cum arată același cod, numai cu funcția înlocuită cu un lambda:

reclame care apar pe ecranul de pornire
list1 = [2, 4, 6, 8]
print(list1)

new_list = list(map(lambda x: x + 5, list1))
print(new_list)

După cum puteți vedea, întregul add_five funcția nu mai este necesară. În schimb, funcția lambda este utilizată pentru a menține lucrurile îngrijite.

Cu filtru funcție, procesul este la fel. Filtru preia o funcție și o aplică tuturor elementelor dintr-o listă și a creat o nouă listă cu numai elementele care au determinat funcția să returneze True.

În primul rând, fără lambdas:

numbers = [1, 4, 5, 10, 20, 30]
print(numbers)
def greater_than_ten_func(number):
if number > 10:
return True
else:
return False
new_numbers = list(filter(greater_than_ten_func, numbers))

print(new_numbers)

Nu este nimic în neregulă cu acest cod, dar devine puțin mai lung. Să vedem câte linii poate elimina o lambda:

numbers = [1, 4, 5, 10, 20, 30]
print(numbers)
new_numbers = list(filter(lambda x: x > 10, numbers))
print(new_numbers)

Funcția lambda a înlocuit necesitatea întregului mai mare_ decât_zece_func ! Și a făcut-o în cinci cuvinte simple. Acesta este motivul pentru care lambdas sunt puternici: reduc dezordinea pentru sarcini simple.

În cele din urmă, să ne uităm la reduce . Reduce este o altă funcție Python. Aplică un calcul continuu tuturor articolelor dintr-o listă. Puteți utiliza acest lucru pentru a calcula o sumă totală sau pentru a înmulți toate numerele împreună:

from functools import reduce
numbers = [10, 20, 30, 40]
print(numbers)
def summer(a, b):
return a + b

result = reduce(summer, numbers)
print(result)

Acest exemplu trebuie importat reduce de la functools , dar nu vă faceți griji, modulul functools face parte din biblioteca de bază Python.

Povestea este la fel cu o lambda, nu este nevoie de o funcție:

from functools import reduce
numbers = [10, 20, 30, 40]
print(numbers)

result = reduce(lambda a, b: a + b, numbers)
print(result)

Lucruri de urmărit cu Python Lambdas

Aceste exemple au arătat cât de ușoare sunt funcțiile lambda, împreună cu harta, filtrarea și reducerea, din biblioteca de bază Python. Cu toate acestea, există câteva utilizări în care funcțiile lambda nu ajută.

Dacă faceți ceva mai mult decât o sarcină de bază sau doriți să apelați alte metode, utilizați o funcție normală. Lambdas sunt minunate pentru funcții anonime, dar trebuie să aibă o singură expresie. Dacă lambda dvs. începe să arate ca o expresie obișnuită, atunci probabil că este timpul să refactorați la o metodă dedicată.

Pentru mai multe sfaturi, consultați-ne ghid pentru programarea orientată obiect în Python și consultați ghidul nostru de întrebări frecvente pentru începătorii Python.

Acțiune Acțiune Tweet E-mail 3 moduri de a verifica dacă un e-mail este real sau fals

Dacă ați primit un e-mail care arată puțin dubios, cel mai bine este întotdeauna să verificați autenticitatea acestuia. Iată trei moduri de a afla dacă un e-mail este real.

Citiți în continuare
Subiecte asemănătoare
  • Programare
  • Piton
  • Tutoriale de codare
Despre autor Joe Coburn(136 articole publicate)

Joe este absolvent de Informatică de la Universitatea Lincoln, Marea Britanie. Este un dezvoltator de software profesionist și, atunci când nu zboară cu drone sau nu scrie muzică, poate fi găsit adesea făcând fotografii sau producând videoclipuri.

Mai multe de la Joe Coburn

Aboneaza-te la newsletter-ul nostru

Alăturați-vă newsletter-ului pentru sfaturi tehnice, recenzii, cărți electronice gratuite și oferte exclusive!

Faceți clic aici pentru a vă abona