Coding for KidsCoding for Kids
Kreativní ÚrovněVýzvyPrůvodce pro Učitele
Hlasovat pro funkce
Pokročilý kurz vývoje v Pythonu
Kapitola
>
Úroveň

Matematické moduly
Introspekce kódu

Cíl

Prozkoumejte některé staré předměty schované na půdě pomocí introspekce kódu a zjistěte, co jsou a jak se používají.

Půda obsahuje kancelář, která se téměř nepoužívá, a několik starých truhlic obsahujících nějaké cennosti, které byly dávno zapomenuty. Pokud není uvedeno jinak nebo pokud poznámka neposkytuje informace, může být někdy docela obtížné identifikovat předměty nebo konstanty shromážděné v terénu. Nejen to, může být těžké zjistit, jaký rozsah věcí můžete se specifickým objektem dosáhnout nebo jaké jsou jeho vlastnosti. Abychom to vyřešili, můžeme použít introspekci kódu.

Introspekce kódu nám umožňuje prohlížet a identifikovat některé útržky kódu a určit některé z jeho vlastností. K tomu budeme používat čtyři (4) vestavěné introspekční funkce zabalené do základního pythonového kódu: type() , id() , repr() , dir() a help() . Fungují následujícím způsobem:

  • type(): Funkce vás informuje, jaký typ objektu je argument, který zadáte. Například pokud zadáte proměnnou jako argument, funkce identifikuje objekt jako proměnnou.
  • id(): Každý objekt vytvořený v pythonu má jedinečné id, které objekt identifikuje v kódu. Zadáním objektu jako argumentu této funkce vám vrátí jedinečné id objektu.
  • repr(): Převádí hodnotu, která není řetězcem, na řetězec, což je užitečné pro převod dat do čitelné podoby.
  • dir(): Zobrazuje všechny atributy, které objekt obsahuje, což je užitečné pro zjištění, čeho lze dosáhnout s daným typem objektu.
  • help(): Zobrazuje všechny dostupné informace o daném objektu, funkci, třídě atd., které jsou dostupné v registru pythonu.

Navíc máme novou asynchronní funkci, a to funkci display(). Tato funkce je podobná funkci read(), ale umožňuje zobrazovat dynamická data, podobně jako introspekční funkce kódu, které produkují dynamická data. Její syntaxe je následující: await player.display( -data-). Všechny tyto funkce budou užitečné pro analýzu dat, což je užitečné jak při použití metod a importu nových funkcí, tak při analýze jakéhokoli kódu, ze kterého chceme identifikovat vlastnosti.

Tyto funkce využijeme k identifikaci a katalogizaci předmětů uložených na půdě. Pro začátek jděte k tmavému X, které značí přes barevné koberce, počínaje tím nad červeným kobercem. V této oblasti jsou tři (3) konstanty: red_container , green_container a blue_container , tyto konstanty představují kontejnery v každé truhle odpovídající každému barevnému koberci.

U každého značky X se postavte čelem k truhle a použijte funkci open() k otevření truhlic, použijte funkci collect() s konstantou odpovídajícího barevného koberce, abyste ji z truhly vyzvedli. Použijte introspekční funkci type() k identifikaci typu konstanty v truhle, výstup, který produkuje, je surová data, která pomocí funkce repr() převedete na řetězec. Použijte funkci speak() k zobrazení výsledného řetězce kombinací funkcí a konstanty, například: player.speak(repr(type(red_container))). Následujte to funkcí speak() s konstantou, abyste přímo identifikovali obsah, například: player.speak(red_container).

Jakmile budou všechny tři (3) konstanty vyzvednuty, introspektovány a identifikovány, jděte k světlejšímu X umístěnému před stolem. Vytvořte tři proměnné pojmenované: item_id_red , item_id_green , item_id_blue , ty budou použity k uložení identifikačních čísel pro každou z vyzvednutých konstant. Použijte introspekční funkci id() k získání jedinečného identifikačního čísla konstanty tím, že ji zadáte jako argument. Spojte název proměnné s názvem konstanty pomocí tohoto formátu, například: item_id_red = id(red_container), proveďte to pro všechny tři (3) proměnné a konstanty.

Jakmile budou všechny tři (3) proměnné naplněny, uložte je všechny do seznamu pojmenovaného item_list a u světlejšího X použijte funkci display(), abyste se ujistili, že je to zaznamenáno na poznámce na stole, například: await player.display(item_list).

Poté, co byl seznam zaznamenán, jděte k tmavému X nad fialovým kobercem a postavte se čelem ke stolu. Zde budeme používat funkci dir() k identifikaci, jaké atributy seznam má, nicméně výstup jsou surová data, která může být obtížné zobrazit. Pro tento účel použijeme funkci repr() k převedení dat na čitelný řetězec. Vytvořte proměnnou pojmenovanou item_attributes a uložte do ní výsledný řetězec, například: item_attributes = repr(dir(item_list)). Nakonec použijte funkci display(), abyste se ujistili, že je to zaznamenáno na poznámce na stole.

Jděte k tmavému X nad bílým kobercem a udělejte to samé jako s dir(), ale s help(), což zobrazí veškerou dokumentaci a použití objektu. Vytvořte proměnnou pojmenovanou item_help a uložte do ní výsledný řetězec, například: item_help = repr(help(item_list)). Nakonec použijte funkci read(), abyste se ujistili, že je to zaznamenáno na poznámce na stole a tím dokončili úroveň.

Kniha Kódu