Pokročilý kurz vývoje v Pythonu
Kapitola
>
Úroveň
Pokročilé funkce
Lambda funkce
Cíl
Použijte lambda funkce k zaznamenání některých spotřebních materiálů, aby mohly být později sesbírány k odeslání.
Některé ovoce a bobule na poli jsou téměř připravené ke sklizni, takže mohou být skladovány, odesílány a prodávány. Bylo by dobré zaznamenat položky, které jsou téměř připravené, abyste měli odhad, kolik produktů z tohoto pole se balí a odesílá.
Pro optimalizaci vašeho kódu můžete použít lambda funkce, což je jiný způsob vytváření vlastních funkcí, a je rychlejší, když vytváříte jednodušší funkce.
# Normal Custom Function
def calculate(x , y , z) :
return( (x+y+z) *2 )
# Lambda Function
calculate = lambda x,y,z : (x + y + z) * 2
V uvedeném příkladu máte dvě funkce: vlastní funkci a lambda funkci. Ačkoli jsou napsány odlišně, funkčně jsou stejné, lambda funkce je jen jednodušší na použití a lze ji rychle nastavit přímo uprostřed kódu. Nicméně, běžná metoda definování funkcí je stále velmi užitečná pro složité kódové sekvence.
V poli lze kategorizovat dva (2) typy položek: "fruits" a "berries". Z těchto dvou (2) typů jsou tři (3) ovoce: apples, pears a oranges; a tři (3) bobule: red, blue a purple.
Nejprve nastavte lambda funkci, jak je uvedeno výše, nazvanou calculate. Tato funkce nám umožní získat počet položek předpovězených pro sezónu tím, že sečteme tři položky a vynásobíme je dvěma (2). Vytvořte další lambda funkci nazvanou estimate, která odhaduje položky, jež budou sesbírány, jako vlastní funkci speak. Nakonec nastavte lambda funkci nazvanou total, která sečte dvě hodnoty a odečte třetí hodnotu nazvanou loss.
# 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)
Vytvořte proměnné pro každé ze tří (3) druhů ovoce a zadejte počet každého z nich na poli. Jděte k tmavé značce X a použijte lambda funkci calculate() se všemi třemi proměnnými ovoce a uložte hodnotu do vlastní proměnné nazvané fruit_number, takto: fruit_number = calculate(orange,pear,apple). Pokračujte použitím lambda funkce estimate() s fruit_number jako číslem a "fruits" jako názvem, takto: estimate(fruit_number, "fruits" ).
Jakmile skončíte s ovocem, jděte ke světlé značce X a udělejte totéž s bobulemi. Nastavte proměnné pro tři (3) bobule s počtem keřů, které spočítáte na poli, poté nastavte lambda funkci stejným způsobem, jako jste to udělali s ovocem, takto: berry_number = calculate(red,blue,purple). Použijte lambda funkci estimate s argumenty berry_number a "berries".
Je zde konstanta nazvaná doc, která obsahuje odhady ztraceného produktu za minulý měsíc. Pokračujte do skladu, jděte směrem ke zlaté značce X a použijte funkci speak() s touto konstantou, abyste si přečetli dokument na stole a zjistili čísla z minulého měsíce.
Jakmile budete znát čísla z minulého měsíce, jděte k tmavé značce X nad fialovým kobercem, postavte se ke stolu, abyste mohli vyčíslit celkové hodnoty pro tento měsíc. Vytvořte proměnnou nazvanou season pro výpočet celkových hodnot sezóny, použijte fruit_number a berry_number jako čísla a použijte číslo, které jste určili z konstanty doc, jako argument loss, takto: season = total(berry_number,fruit_number, number found in doc constant)
Pokračujte použitím lambda funkce estimate() s proměnnou season jako číslem a "products" jako názvem, abyste dokončili úroveň.