Fejlett Python fejlesztési tanfolyam
Fejezet
>
Szint
Haladó függvények
Lambda függvények
Célkitűzés
Használj lambda függvényeket, hogy dokumentáld a fogyóeszközöket, így később összegyűjthetők lesznek a szállításhoz.
Néhány gyümölcs és bogyó a mezőn majdnem készen áll a betakarításra, így tárolhatók, szállíthatók és eladhatók lesznek. Jó ötlet lenne lejegyezni azokat a termékeket, melyek majdnem készen vannak, hogy becslést kapj arra, hány termék kerül csomagolásra és kiszállításra ebből a mezőből.
A kód optimalizálása érdekében használhatod a lambda függvényeket, ami egy másik módszer egyedi függvények létrehozására, de gyorsabb, ha az általad létrehozott függvények egyszerűbbek.
# Normal Custom Function
def calculate(x , y , z) :
return( (x+y+z) *2 )
# Lambda Function
calculate = lambda x,y,z : (x + y + z) * 2
A fenti példában két függvény szerepel, egy egyedi függvény és egy lambda függvény. Bár eltérően vannak írva, funkcionálisan ugyanazok; a lambda függvényt csak könnyebb használni és gyorsan felállítható a kód közepén. Ugyanakkor a hagyományos függvénydefiníciós módszer továbbra is nagyon hasznos komplex kódszekvenciák esetén.
A mezőn két (2) típusú tétel kategorizálható: a „fruits” és a „berries”. Ezekből a két (2) típusból három (3) gyümölcs van: apples, pears és oranges; illetve három (3) bogyó: red, blue és purple.
Először állítsd be a fenti példában illusztrált lambda függvényt, melynek neve calculate, ez lehetővé teszi, hogy a szezonra előrejelzett termékszámot úgy kapd meg, hogy három elemet összeadsz, és megszorzod kettővel (2). Hozz létre egy másik lambda függvényt estimate néven, hogy becsülje meg, hány tétel kerül összegyűjtésre, mint egy egyedi speak függvény. Végül állíts be egy lambda függvényt total néven, amely két értéket ad össze, majd kivon belőle egy harmadik, loss névre hallgató értéket.
# Calculate items calculate = lambda x,y,z : (x + y + z) * 2 # Estimate items estimate = lambda number , name : player.speak( "I estimate %d %s this season" % (number,name) ) # Total all items total = lambda num1, num2, loss : ( (num1 + num2) - loss)
Hozz létre változókat a három (3) gyümölcs mindegyikéhez, és add hozzá, hogy melyikből mennyi van a mezőn. Menj el a sötét X jelzéshez, és használd a lambda függvényt calculate() mind a három gyümölcs változóval, majd tárold az értéket egy fruit_number nevű egyedi változóban, így: fruit_number = calculate(orange,pear,apple). Ezt követően használd az estimate() lambda függvényt úgy, hogy a fruit_number legyen a szám, és a név legyen a „fruits”, így: estimate(fruit_number, "fruits" ).
Amint befejezted a gyümölcsökkel, menj el a világos X jelzéshez, és ugyanígy járj el a bogyókkal. Állíts be változókat a három (3) bogyohoz a mezőn számolt bozót mennyiséggel, majd állítsd be a lambda függvényt ugyanolyan módon, mint a gyümölcsöknél: berry_number = calculate(red,blue,purple). Használd az estimate lambda függvényt úgy, hogy berry_number és a „berries” legyen az argumentum.
Van egy doc nevű konstans, amely a múlt havi becsléseket tartalmazza az elveszett termékekről. Menj el a raktárhoz, közelítsd meg az arany X jelzésű pontot, és használd a speak() függvényt a konstanszal, hogy elolvass egy asztalon lévő dokumentumot, így meghatározhatod a múlt havi számokat.
Amint a múlt havi számokat megtudtad, menj el a sötét X jelzéshez a lila szőnyegen, fordulj az asztal felé, hogy meghatározd a ezen hónap összesített értékeit. Hozz létre egy season nevű változót, amely kiszámítja a szezon összesített értékeit, használd a fruit_number és a berry_number változókat számként, és a doc konstansból meghatározott számot használd a loss argumentumként, így: season = total(berry_number,fruit_number, number found in doc constant)
Ezt követően használd az estimate() lambda függvényt úgy, hogy a season változó legyen a szám argumentum, és a „products” legyen a név argumentum, hogy ezzel befejezd a szintet.