Python Lambda funkcijos
Python Lambda funkcijos yra anoniminės funkcijos reiškia, kad funkcija yra be pavadinimo. Kaip jau žinome, def raktinis žodis naudojamas norint apibrėžti įprastą funkciją Python. Panašiai, lambda raktinis žodis naudojamas anoniminei funkcijai apibrėžti Python .
Python Lambda funkcijos sintaksė
Sintaksė: lambda argumentai: išraiška
- Ši funkcija gali turėti bet kokį argumentų skaičių, bet tik vieną išraišką, kuri įvertinama ir grąžinama.
- Galima laisvai naudoti lambda funkcijas visur, kur reikalingi funkciniai objektai.
- Turite žinoti, kad lambda funkcijos sintaksiškai apribotos viena išraiška.
- Jis naudojamas įvairiai tam tikrose programavimo srityse, be kitų funkcijų išraiškų tipų.
Python Lambda funkcijos pavyzdys
Pavyzdyje apibrėžėme lambda funkciją ( viršutinė ), norėdami konvertuoti eilutę į didžiąsias raides naudodami viršutinis () .
Šis kodas apibrėžia lambda funkciją, pavadintą upper> kuris kaip argumentą paima eilutę ir konvertuoja ją į didžiąsias raides, naudodamas upper()> metodas. Tada ji taiko šią lambda funkciją eilutei „techcodeview.com“ ir išspausdina rezultatą
Python3
str1> => 'techcodeview.com'> upper> => lambda> string: string.upper()> print> (upper(str1))> |
Išvestis:
GEEKSFORGEEKS
Lambda funkcijos naudojimas Python
Pažiūrėkime keletą praktinių Python lambda funkcijos naudojimo būdų.
Būklės tikrinimas naudojant Python lambda funkciją
Čia, 'format_numric' iškviečia lambda funkciją, o skaičius perduodamas kaip parametras operacijoms atlikti.
Python3
format_numeric> => lambda> num: f> '{num:e}'> if> isinstance> (num,> int> )> else> f> '{num:,.2f}'> print> (> 'Int formatting:'> , format_numeric(> 1000000> ))> print> (> 'float formatting:'> , format_numeric(> 999999.789541235> ))> |
Išvestis:
Int formatting: 1.000000e+06 float formatting: 999,999.79
Skirtumas tarp Lambda funkcijų ir def apibrėžtos funkcijos
Kodas apibrėžia kubo funkciją naudodamas abu “ def'> raktinis žodis ir lambda funkcija. Jis apskaičiuoja tam tikro skaičiaus (šiuo atveju 5) kubą, naudodamas abu metodus, ir išspausdina rezultatus. Išėjimas yra 125 abiem “ def'> ir lambda funkcijos, parodydamos, kad jos pasiekia tą patį kubo skaičiavimą.
Python3
def> cube(y):> > return> y> *> y> *> y> lambda_cube> => lambda> y: y> *> y> *> y> print> (> 'Using function defined with `def` keyword, cube:'> , cube(> 5> ))> print> (> 'Using lambda function, cube:'> , lambda_cube(> 5> ))> |
Išvestis:
Using function defined with `def` keyword, cube: 125 Using lambda function, cube: 125
Kaip matome aukščiau pateiktame pavyzdyje, tiek kubas() funkcija ir lambda_cube() funkcija elgiasi taip pat ir kaip numatyta. Išanalizuokime aukščiau pateiktą pavyzdį šiek tiek plačiau:
| Su lambda funkcija | Be lambda funkcijos |
|---|---|
| Palaiko vienos eilutės teiginius, kurie kartais grąžina tam tikrą reikšmę. | Palaiko bet kokį eilučių skaičių funkciniame bloke |
| Tinka trumpoms operacijoms/duomenims manipuliuoti. | Tinka visais atvejais, kai reikia kelių kodo eilučių. |
| Naudojant lambda funkciją kartais gali sumažėti kodo skaitomumas. | Kad būtų lengviau skaityti, galime naudoti komentarus ir funkcijų aprašymus. |
Praktinis Python lambda funkcijos naudojimas
Python Lambda funkcija su sąrašo supratimu
Kiekvienoje iteracijoje viduje sąrašo supratimas , kuriame naują lambda funkciją su numatytuoju argumentu x (kur x yra dabartinis iteracijos elementas). Vėliau ciklo for viduje mes iškviečiame tą patį funkcijos objektą, turintį numatytąjį argumentą naudojant prekė () ir gauti norimą vertę. Taigi, yra_lyginis_sąrašas saugo lambda funkcijų objektų sąrašą.
Python3
is_even_list> => [> lambda> arg> => x: arg> *> 10> for> x> in> range> (> 1> ,> 5> )]> for> item> in> is_even_list:> > print> (item())> |
Išvestis:
10 20 30 40
Python Lambda funkcija su if-else
Čia mes naudojame Maks lambda funkcija, kad surastų didžiausią skaičių dviejų sveikųjų skaičių.
Python3
Max> => lambda> a, b : a> if> (a>b)>> |