Una guia per a principiants per entendre les funcions Python Lambda

Una guia per a principiants per entendre les funcions Python Lambda

Les lambdas de Python són una de les funcions més útils, importants i interessants que cal conèixer. Malauradament, també són fàcils d’entendre malament i equivocar-se.





En aquest article, explicarem tot el que necessiteu saber sobre aquestes misterioses funcions, com utilitzar-les i per què són útils.





Abans d’endinsar-vos en aquests exemples pràctics, és possible que vulgueu configurar un entorn virtual Python. Si ni tan sols voleu fer-ho, almenys hauríeu de provar aquests exemples amb un intèrpret d’ordres interactiu de Python .





Què és un Lambda a Python?

Una lambda és simplement una forma de definir una funció a Python. De vegades es coneixen com a 'operadors lambda' o 'funcions lambda'.

Si heu utilitzat Python abans, probablement hàgiu definit les vostres funcions mitjançant el fitxer def paraula clau i fins ara ha funcionat bé. Llavors, per què hi ha una altra manera de fer el mateix?



La diferència és que les funcions lambda són anònimes. És a dir, són funcions que no cal anomenar. S'utilitzen per crear funcions petites i puntuals en els casos en què una funció 'real' seria massa gran i voluminosa.

Lambdas retorna un objecte de funció, que es pot assignar a una variable. Lambdas pot tenir qualsevol nombre d’arguments, però només pot tenir una expressió. No podeu trucar a altres funcions dins de lambdas.





L'ús més comú per a les funcions lambda és el codi que requereix una simple funció d'una línia, on seria excessiu escriure una funció normal completa. A continuació, es detalla més detalls a la secció 'Què passa amb el mapa, el filtre i la reducció?'.

Com utilitzar Lambdas a Python

Abans de mirar una funció lambda, vegem una funció súper bàsica definida de la manera 'tradicional':





def add_five(number):
return number + 5

print(add_five(number=4))

Aquesta funció és molt bàsica, però serveix per il·lustrar lambdas. El vostre pot ser més complex que això. Aquesta funció n'afegeix cinc a qualsevol número que se li passi a través del fitxer número paràmetre.

A continuació s’explica la seva funció lambda:

add_five = lambda number: number + 5

print(add_five(number=4))

En lloc d’utilitzar-lo def , la paraula lambda s'utilitza. No calen claudàtors, però les paraules posteriors a lambda paraules clau es creen com a paràmetres. Els dos punts s’utilitzen per separar els paràmetres i l’expressió. En aquest cas, l’expressió és número + 5 .

No cal fer servir el fitxer tornar paraula clau --- la lambda ho fa automàticament.

A continuació s’explica com crearíeu una funció lambda amb dos arguments:

diferència entre un monitor i un televisor
add_numbers_and_five = lambda number1, number2: number1 + number2 + 5

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

Si encara no esteu segur del punt lambdas, la següent secció us endinsarà i us ajudarà a veure la llum.

Python Lambdas amb mapa, filtre i reducció

La biblioteca central de Python té tres mètodes anomenats mapa , reduir , i filtre . Aquests mètodes són possiblement els millors motius per utilitzar funcions lambda.

El mapa La funció espera dos arguments: una funció i una llista. Pren aquesta funció i l’aplica a tots els elements de la llista, retornant la llista d’elements modificats com a objecte de mapa. El llista La funció s'utilitza per tornar a convertir l'objecte del mapa resultant en una llista.

A continuació s’explica com utilitzar el mapa sense 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)

Aquesta funció de mapa és molt útil, però podria ser millor. el afegir_cinc La funció es passa com a argument, però, i si no voleu crear una funció cada vegada que utilitzeu el mapa? Podeu utilitzar una lambda al seu lloc!

Això és el que sembla aquest mateix codi, només amb la funció substituïda per una lambda:

el meu ordinador diu que endollat ​​no es carrega
list1 = [2, 4, 6, 8]
print(list1)

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

Com podeu veure, el conjunt afegir_cinc la funció ja no és necessària. En canvi, la funció lambda s’utilitza per mantenir les coses ordenades.

Amb el filtre funció, el procés és molt el mateix. Filtre pren una funció i l’aplica a tots els elements d’una llista i ha creat una llista nova amb només els elements que han fet que la funció torni True.

Primer, sense 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)

No hi ha res dolent en aquest codi, però s’allarga una mica. Vegem quantes línies pot eliminar una lambda:

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

La funció lambda ha substituït la necessitat del conjunt major_de_ten_func ! I ho ha fet en cinc paraules simples. Per això, les lambdas són potents: redueixen el desordre per a tasques senzilles.

Finalment, vegem-ho reduir . Reduir és una altra funció genial de Python. Aplica un càlcul continu a tots els elements d’una llista. Podeu utilitzar-lo per comptar una suma total o multiplicar tots els números:

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

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

Cal importar aquest exemple reduir des del funcools , però no us preocupeu, el mòdul functools forma part de la biblioteca central de Python.

La història és molt la mateixa amb una lambda, no cal fer cap funció:

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

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

Coses a tenir en compte amb Python Lambdas

Aquests exemples han demostrat la facilitat que tenen les funcions lambda, juntament amb el mapa, el filtre i la reducció, de la biblioteca central de Python. Tot i això, hi ha alguns usos en què les funcions lambda no ajuden.

Si feu alguna cosa més que una tasca bàsica o voleu trucar a altres mètodes, utilitzeu una funció normal. Els lambdas són excel·lents per a funcions puntuals i anònimes, però només han de tenir una sola expressió. Si la vostra lambda comença a semblar una expressió regular, és probable que sigui hora de refer-vos a un mètode dedicat.

Per obtenir més consells, consulteu el nostre guia de programació orientada a objectes a Python i consulteu la nostra guia de preguntes freqüents per a principiants de Python.

Compartir Compartir Tweet Correu electrònic 3 maneres de comprovar si un correu electrònic és real o fals

Si heu rebut un correu electrònic que sembla una mica dubtós, sempre és millor comprovar-ne l’autenticitat. A continuació, es mostren tres maneres de saber si un correu electrònic és real.

Llegiu a continuació
Temes relacionats
  • Programació
  • Python
  • Tutorials de codificació
Sobre l'autor Joe Coburn(136 articles publicats)

Joe és llicenciat en Informàtica per la Universitat de Lincoln, Regne Unit. És un desenvolupador de programari professional i, quan no fa drons voladors ni escriu música, sovint se’l pot trobar fent fotos o produint vídeos.

Més de Joe Coburn

Subscriu-te al nostre butlletí

Uniu-vos al nostre butlletí per obtenir consells tècnics, ressenyes, llibres electrònics gratuïts i ofertes exclusives.

Feu clic aquí per subscriure-us