Vodič za početnike za razumijevanje Python Lambda funkcija

  • Michael Cain
  • 0
  • 2117
  • 105
Oglas

Lambde u Pythonu jedna su od najkorisnijih, važnih i najzanimljivijih značajki koje treba znati. Nažalost, i njih je lako razumjeti i pogriješiti.

U ovom ćemo članku objasniti sve što trebate znati o tim misterioznim funkcijama, kako ih koristiti i zašto su korisne.

Prije ronjenja u ove praktične primjere, možda biste željeli postaviti virtualno okruženje Pythona. Saznajte kako koristiti virtualno okruženje Python-a. Saznajte kako koristiti virtualno okruženje Python-a Bez obzira jeste li iskusni programer Python-a ili tek započinjete, učite kako postavljanje virtualnog okruženja bitno je za svaki Python projekt. , Ako to uopće ne želite učiniti, pokušajte barem s ovim primjerima interaktivnom mrežnom ljuskom Python-a. Isprobajte Python u svom pregledniku s ovim besplatnim internetskim interaktivnim školjkama, Isprobajte Python u svom pregledniku s ovim besplatnim internetskim interaktivnim školjkama, bez obzira jeste li prolazeći kroz ove Python primjere ili pregledavajući osnove nizova i popisa, možete isprobati kôd pravo u svom pregledniku. Evo najboljih internetskih tumača Python-a koje smo pronašli. .

Kakva je Lambda u Pythonu?

Lambda je jednostavno način definiranja funkcije u Pythonu. Ponekad su poznati i kao “lambda operatori” ili “lambda funkcije”.

Ako ste prije koristili Python, vjerojatno ste svoje funkcije definirali pomoću def ključna riječ i do sada vam je dobro radilo. Pa zašto postoji drugi način da učinite istu stvar?

Razlika je u tome što su lambda funkcije anonimne. Znači, to su funkcije koje ne trebaju biti imenovane. Koriste se za stvaranje malih jednokratnih funkcija u slučajevima kada a “stvaran” funkcija bi bila prevelika i glomazna.

Lambde vraćaju funkcijski objekt koji se može dodijeliti varijabli. Lambda može imati bilo koji broj argumenata, ali može imati samo jedan izraz. Ne možete nazvati druge funkcije unutar lambda.

Najčešće se koristi lambda funkcije u kodu koji zahtijeva jednostavnu jedno-linijsku funkciju, gdje bi bilo suvišno napisati potpunu normalnu funkciju. Ovo je detaljnije opisano u nastavku “Što je s kartom, filtriranjem i smanjenjem?”.

Kako koristiti Lambdas u Pythonu

Prije nego što pogledamo lambda funkciju, pogledajmo super osnovnu funkciju definiranu “tradicionalan” put:

def add_five (broj): povratni broj + 5 ispisa (add_five (broj = 4))

Ova je funkcija vrlo osnovna, ali služi za ilustriranje janjetine. Vaš je možda složeniji od ovoga. Ova funkcija dodaje pet bilo kojem broju koji mu se prenese putem broj parametar.

Evo kako to izgleda lambda funkcija:

add_five = lambda broj: broj + 5 ispisa (add_five (broj = 4))

Umjesto korištenja def, riječ À koristi se. Nije potrebno zagraditi zagrade, ali bilo koje riječi iza À ključna riječ kreirana je kao parametri. Debelo crijevo se koristi za odvajanje parametara i izraza. U ovom slučaju izraz je broj + 5.

Nema potrebe za korištenjem povratak ključna riječ - lambda to radi automatski.

Evo kako biste stvorili lambda funkciju s dva argumenta:

add_numbers_and_five = lambda broj1, broj2: broj1 + broj2 + 5 ispisa (add_numbers_and_five (broj1 = 4, broj2 = 3))

Ako još uvijek niste sigurni u vezi s lambdama, sljedeći će odjeljak zaroniti i pomoći vam da ugledate svjetlo.

Python Lambdas s kartom, filtriranjem i smanjenjem

Python core knjižnica ima tri metode nazvane karta, smanjiti, i filtar. Ove su metode možda najbolji razlozi za korištenje lambda funkcija.

karta funkcija očekuje dva argumenta: funkciju i popis. Ona uzima tu funkciju i primjenjuje je na svaki element na popisu, vraćajući popis modificiranih elemenata kao objekt karte. popis funkcija se koristi za ponovno pretvaranje rezultirajućeg objekta karte u popis.

Evo kako koristiti kartu bez lambda:

list1 = [2, 4, 6, 8] ispis (list1) def add_five (broj): povratni broj + 5 new_list = popis (karta (add_five, list1)) print (new_list)

Ova funkcija karata je prilično korisna, ali mogla bi biti i bolja. add_five funkcija se prenosi kao argument, ali što ako ne želite stvoriti funkciju svaki put kada koristite kartu? Možete umjesto toga koristiti lambda!

Evo kako taj isti kod izgleda, samo s funkcijom koju je zamijenila lambda:

list1 = [2, 4, 6, 8] ispis (list1) new_list = popis (mapa (lambda x: x + 5, list1)) ispis (novi_list)

Kao što vidite, cjelina add_five funkcija više nije potrebna. Umjesto toga, lambda funkcija koristi se za održavanje stvari urednim.

Sa filtar funkcija, postupak je gotovo isti. filtar uzima funkciju i primjenjuje je na svaki element na popisu i stvorio je novi popis samo s elementima koji su uzrokovali da funkcija vrati True.

Prvo, bez janjetine:

brojevi = [1, 4, 5, 10, 20, 30] ispis (brojevi) def veći_tran_ten_func (broj): ako je broj> 10: povratak Istina: povratak Lažni novi_brojevi = popis (filtriranje (veći_than_ten_func, brojevi)) ispis (novi_brojevi )

Nema ništa loše s ovim kodom, ali postaje malo duži. Pogledajmo koliko redaka lambda može ukloniti:

brojevi = [1, 4, 5, 10, 20, 30] ispis (brojevi) new_numbers = popis (filter (lambda x: x> 10, brojevi)) print (new_numbers)

Funkcija lambde zamijenila je potrebu za cjelinom greater_than_ten_func! I to je učinjeno u pet jednostavnih riječi. Zbog toga su lambde moćne: smanjuju nered zbog jednostavnih zadataka.

Za kraj, pogledajmo smanjiti. Reduce je još jedna cool Python funkcija. On primjenjuje valjanje izračuna na sve stavke na popisu. Možete to koristiti za zbrajanje zbroja ili množenje svih brojeva zajedno:

iz funkcije functools uvoz smanji brojeve = [10, 20, 30, 40] ispis (brojevi) def summer (a, b): vrati a + b rezultat = smanji (ljeto, brojevi) print (rezultat)

Ovaj primjer treba uvesti smanjiti od functools modula, ali ne brinite, modul funktools dio je osnovne knjižnice Pythona.

Priča je vrlo ista s lambda, nema potrebe za funkcijom:

iz funkcije functools uvoz smanji brojeve = [10, 20, 30, 40] ispis (brojevi) rezultat = smanji (lambda a, b: a + b, brojevi) ispis (rezultat)

Stvari na koje treba paziti s Python Lambdasom

Ovi su primjeri pokazali koliko su lambda funkcije, zajedno s mapom, filtriranjem i smanjenjem, iz jezgre knjižnice Python. Ipak, postoji nekoliko načina kojima lambda funkcije ne pomažu.

Ako radite išta više od osnovnog zadatka ili želite nazvati druge metode, koristite normalnu funkciju. Lambde su sjajne za jednokratne, anonimne funkcije, ali moraju imati samo jedan izraz. Ako vaša lambda počne izgledati redovito, onda je vjerojatno vrijeme da se preusmerite na namjensku metodu.

Dodatne savjete potražite u našem vodiču za objektno orijentirano programiranje u Pythonu Vodič za početnike Python objektno orijentiranom programiranju Vodič za početnike za Python objektno orijentirano programiranje Da biste u potpunosti iskoristili prednosti Pythona, htjet ćete naučiti kako Python radi s objektno orijentirano programiranje (OOP). i potražite vodič za FAQ za početnike Pythona Najčešća pitanja o programiranju Python-a Najčešća pitanja o Python programiranju U ovom ćemo vam članku proći kroz sve što trebate znati o Pythonu kao početniku.. .




Još ne komentari

O modernoj tehnologiji, jednostavnoj i pristupačnoj.
Vaš vodič u svijetu moderne tehnologije. Naučite kako koristiti tehnologije i uređaje koji nas okružuju svaki dan i naučite kako otkriti zanimljivosti na Internetu.