Príručka pre začiatočníkov k porozumeniu funkcií Python Lambda

Príručka pre začiatočníkov k porozumeniu funkcií Python Lambda

Lambdy v Pythone sú jednou z najužitočnejších, najdôležitejších a najzaujímavejších funkcií, o ktorých by ste mali vedieť. Bohužiaľ je tiež ľahké ich nesprávne pochopiť a mýliť sa.





V tomto článku vám vysvetlíme všetko, čo potrebujete vedieť o týchto záhadných funkciách, ako ich používať a prečo sú užitočné.





Predtým, ako sa ponoríme do týchto praktických príkladov, možno budete chcieť vytvoriť virtuálne prostredie Python. Ak sa vám do toho ani nechce, tak by ste mali aspoň vyskúšať tieto príklady s interaktívnym online prostredím Python .





Čo je to lambda v Pythone?

Lambda je jednoducho spôsob, ako definovať funkciu v Pythone. Niekedy sú známe aj ako „lambda operátory“ alebo „lambda funkcie“.

Ak ste už používali Python, pravdepodobne ste definovali svoje funkcie pomocou def kľúčové slovo a doteraz vám to fungovalo. Prečo teda existuje iný spôsob, ako urobiť to isté?



Rozdiel je v tom, že funkcie lambda sú anonymné. To znamená, že ide o funkcie, ktoré nie je potrebné pomenovať. Používajú sa na vytváranie malých, jednorazových funkcií v prípadoch, keď by „skutočná“ funkcia bola príliš veľká a objemná.

Lambdy vracajú funkčný objekt, ktorý je možné priradiť k premennej. Lambdy môžu mať ľubovoľný počet argumentov, ale môžu mať iba jeden výraz. Vnútri lambdas nemôžete volať iné funkcie.





Najbežnejšie použitie pre funkcie lambda je v kóde, ktorý vyžaduje jednoduchú jednoriadkovú funkciu, kde by bolo zbytočné napísať úplnú normálnu funkciu. Podrobnejšie je to popísané nižšie v časti „Čo s mapou, filtrom a zmenšením?“.

Ako používať lambdy v Pythone

Predtým, ako sa pozrieme na funkciu lambda, pozrime sa na super základnú funkciu definovanú „tradičným“ spôsobom:





def add_five(number):
return number + 5

print(add_five(number=4))

Táto funkcia je veľmi základná, ale slúži na ilustráciu lambdas. Ten váš môže byť zložitejší. Táto funkcia pripočíta päť k akémukoľvek číslu, ktoré jej bolo odovzdané cez číslo parameter.

Takto to vyzerá ako funkcia lambda:

add_five = lambda number: number + 5

print(add_five(number=4))

Skôr než používať def , slovo lambda sa používa. Nevyžadujú sa žiadne zátvorky, ale akékoľvek slová nasledujúce za lambda kľúčové slová sú vytvorené ako parametre. Dvojbodka sa používa na oddelenie parametrov a výrazu. V tomto prípade je výraz číslo + 5 .

Nie je potrebné používať vrátiť sa kľúčové slovo --- lambda to urobí za vás automaticky.

Tu je návod, ako by ste vytvorili funkciu lambda s dvoma argumentmi:

aplikácie prevodu textu na reč pre Android
add_numbers_and_five = lambda number1, number2: number1 + number2 + 5

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

Ak si stále nie ste istí, pokiaľ ide o bod lambdas, ponorí sa do vás nasledujúca časť, ktorá vám pomôže vidieť svetlo.

Python Lambdas s mapou, filtrom a zmenšením

Knižnica jadra Pythonu má tri metódy, ktoré sa nazývajú mapu , redukovať a filter . Tieto metódy sú možno najlepším dôvodom na používanie funkcií lambda.

The mapu funkcia očakáva dva argumenty: funkciu a zoznam. Prevezme túto funkciu a použije ju na každý prvok v zozname, pričom zoznam upravených prvkov vráti ako objekt mapy. The zoznam funkcia sa používa na opätovný prevod výsledného objektu mapy späť do zoznamu.

Tu je návod, ako používať mapu bez 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)

Táto funkcia mapy je celkom užitočná, ale mohla by byť lepšia. the add_five funkcia je zadaná ako argument, ale čo keď nechcete vytvárať funkciu pri každom použití mapy? Namiesto toho môžete použiť lambdu!

Takto vyzerá ten istý kód, iba s funkciou nahradenou lambda:

ako pripojiť dva monitory k jednému počítaču s jedným portom vga
list1 = [2, 4, 6, 8]
print(list1)

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

Ako vidíte, celý add_five funkcia už nie je potrebná. Namiesto toho sa na udržanie poriadku používa funkcia lambda.

S filter funkcie, je proces veľmi podobný. Filter prevezme funkciu a použije ju na všetkých prvkov v zozname a vytvorí nový zoznam iba s prvkami, ktoré spôsobili, že funkcia vráti hodnotu True.

Po prvé, bez 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)

Na tomto kóde nie je nič zlého, ale trochu sa predlžuje. Pozrime sa, koľko riadkov môže lambda odstrániť:

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

Funkcia lambda nahradila potrebu celku greater_than_ten_func ! A je to hotové v piatich jednoduchých slovách. Preto sú lambdy silné: obmedzujú neporiadok pri jednoduchých úlohách.

Nakoniec sa pozrime na redukovať . Zníženie je ďalšou skvelou funkciou Pythonu. Na všetky položky v zozname uplatňuje postupný výpočet. Môžete to použiť na zrátanie celkového súčtu alebo vynásobenie všetkých čísel spoločne:

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

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

Tento príklad je potrebné importovať redukovať z functools modul, ale nebojte sa, modul functools je súčasťou základnej knižnice Pythonu.

Príbeh je veľmi podobný lambda, nie je potrebná žiadna funkcia:

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

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

Na čo si dať pri Python Lambdas pozor

Tieto príklady ukázali, aké ľahké sú funkcie lambda spolu s mapou, filtrom a redukciou z jadrovej knižnice Pythonu. Napriek tomu existuje niekoľko použití, kde funkcie lambda nepomáhajú.

Ak robíte niečo viac ako základnú úlohu alebo chcete zavolať iné metódy, použite normálnu funkciu. Lambdy sú skvelé na jednorazové anonymné funkcie, ale musia mať iba jeden výraz. Ak vaša lambda začína vyzerať ako regulárny výraz, pravdepodobne je načase refaktorovať na vyhradenú metódu.

Ďalšie tipy nájdete v našom sprievodca objektovo orientovaným programovaním v Pythone a pozrite sa na nášho sprievodcu častými otázkami pre začiatočníkov v Pythone.

zdieľam zdieľam Tweet E -mail 3 spôsoby, ako skontrolovať, či je e -mail skutočný alebo falošný

Ak ste dostali e -mail, ktorý vyzerá trochu pochybne, je vždy najlepšie skontrolovať jeho pravosť. Toto sú tri spôsoby, ako zistiť, či je e -mail skutočný.

Čítajte ďalej
Súvisiace témy
  • Programovanie
  • Python
  • Návody na kódovanie
O autorovi Joe Coburn(136 publikovaných článkov)

Joe je absolventom počítačových vied na University of Lincoln, UK. Je profesionálnym softvérovým vývojárom, a keď nelieta s dronmi ani nepíše hudbu, často ho zastihne fotografovanie alebo vytváranie videí.

Viac od Joe Coburn

prihlásiť sa ku odberu noviniek

Pripojte sa k nášmu bulletinu a získajte technické tipy, recenzie, bezplatné elektronické knihy a exkluzívne ponuky!

Kliknutím sem sa prihlásite na odber