Pokročilý kurz vývoje v Pythonu
Kapitola
>
Úroveň
Pokročilé funkce
Parciální funkce
Cíl
Zabal a umísti stavební materiály, které byly doručeny na mol, pomocí částečných funkcí.
Některé zásoby byly právě doručeny na mol, měly by být zabaleny a uloženy tak, aby mohly být později využity jako stavební materiál. Materiály je třeba zabalit do látky a svázat nití. Je důležité zvážit všechny položky při balení, aby bylo možné je později efektivně přepravovat. Abychom tento proces usnadnili, můžeme jej optimalizovat pomocí částečných funkcí.
Částečná funkce je vlastní funkce, která je zkrácena tím, že není potřeba zadávat argumentové hodnoty, které jsou převážně konzistentní. To vám umožňuje používat funkce, které přijímají více argumentů, a spouštět je s pouze jedním argumentem nebo s libovolným počtem, který si zvolíte.
from functools import partial
Na začátku musíte importovat partial z modulu známého jako functools, což vám umožní vytvářet částečné funkce. Importovací kód se vždy umisťuje na začátek editoru kódu.
Nastavte funkci s názvem weight a nechte ji přijímat tři (3) argumenty: thread, cloth a material. Tato funkce vám umožní vypočítat hmotnost zabalených materiálů, a my můžeme tento proces dále optimalizovat přesměrováním přes částečnou funkci.
def weight(thread, cloth, material):
return 2 * thread + 5 * cloth + material * 10
package = partial(weight, 4, 2)
Vytvořte částečnou funkci s názvem package, která je nastavena obdobně jako lambda funkce. Použijte partial() k naplnění funkce a přidejte název funkce i pevné hodnoty pro argumenty, které chcete nastavit.
Všechny argumenty z původní funkce, které nebudete přiřazovat, se stanou argumenty, které musí být přiřazeny pomocí částečné funkce. V případě částečné funkce package() je to argument material.
Jděte k tmavým značkám X před bednami, abyste sebrali balicí materiály. Na značce X na žlutém koberci použijte funkci collect() k získání hodnoty "thread" a jděte k významce X na fialovém koberci a použijte funkci collect() k získání hodnoty "cloth". Tyto položky budou použity k zabalení materiálů.
Přejděte přes mol a seberte všechny stavební materiály, kterými jsou: bricks, planks, red_bricks a wood. Jakmile je seberete, přičtěte počet sebraných kusů každého materiálu do proměnné pojmenované podle materiálu, například: bricks = 3.
Poté jděte ke světlým značkám X před bednami a vypočtěte hmotnost každého stavebního materiálu před jeho uložením. Použijte funkci speak() ve spojení s částečnou funkcí package(), abyste vypočítali hmotnost. Použijte proměnné materiálů jako argumenty pro funkci package(), například:
player.speak("Package weighs %s pounds" % package(bricks)) player.place(package(bricks))
Následujte to použitím funkce place() k uložení materiálu do beden, opět pomocí funkce package(), jako je uvedeno v příkladu výše.
Na světlé značce X se červeným kobercem zvažte a uložte bricks. Na světlé značce X s modrým kobercem zvažte a uložte planks. Na světlé značce X s oranžovým kobercem zvažte a uložte red_bricks. Na světlé značce X se zeleným kobercem zvažte a uložte wood. Uložte a zvažte všechny čtyři materiály ve správných bednách, abyste úroveň dokončili.