Coding for KidsCoding for Kids
Kreatív SzintekKihívásokTanári Útmutató
Szavazzon a funkciókra
Fejlett Python fejlesztési tanfolyam
Fejezet
>
Szint

Matematikai modulok
Kód introspekció

Cél

Vizsgálj meg néhány régi tárgyat, amelyeket a padláson rejtettek el, kód introspekció segítségével, hogy megtudd, mik ők és hogyan használhatóak.

A padláson van egy ritkán használt iroda, és néhány régi láda, amelyekben értékes tárgyak vannak, már rég elfelejttetve. Hacsak máshogy nem közlik, vagy egy utasítás nem tartalmazza az információt, néha elég nehéz beazonosítani a tárgyakat, vagy a terepen összegyűjtött állandókat. Nemcsak ez, hanem nehéz lehet azonosítani, hogy egy adott objektummal milyen dolgokat lehet végrehajtani, vagy mik az attribútumai. Ennek kezelésére használhatjuk a Kód Introspekciót.

A kód introspekció lehetővé teszi számunkra, hogy megvizsgáljunk és beazonosítsunk bizonyos kódrészleteket, illetve jelezzük néhány tulajdonságát. Ehhez négy (4) beépített introspekciós függvényt használunk, melyek a Python alapkódjába vannak csomagolva: type(), id(), repr(), dir() és help(). Működésük a következő:

  • type(): A függvény tájékoztat, hogy a megadott argumentum milyen típusú objektum. Például, ha egy változót adsz meg argumentumként, a függvény az objektumot változóként azonosítja.
  • id(): Minden Pythonban létrehozott objektum egyedi azonosítóval rendelkezik, amely azonosítja az objektumot a kódon belül. Ha egy objektumot adsz meg argumentumként ennek a függvénynek, visszaadja az objektum egyedi azonosítóját.
  • repr(): Nem szöveges értéket alakít át szöveggé, hasznos az adat olvasható formára alakításához.
  • dir(): Megjeleníti az objektum összes attribútumát, hasznos annak megismeréséhez, hogy egy adott objektumtípussal mit lehet elérni.
  • help(): Megjeleníti az összes elérhető információt egy adott objektumról, függvényről, osztályról stb., amely elérhető a Python regisztrációjában.

Emellett van egy új aszinkron függvényünk, a display() függvény. Ez a függvény hasonló a read() függvényhez, de lehetővé teszi dinamikus adatok megjelenítését, akárcsak a kód introspekciós függvények, amelyek dinamikus adatokat produkálnak. Szintaxisa a következő: await player.display( -data-). Mindegyik függvény hasznos lesz adatok elemzéséhez, ami arra is hasznos, amikor Metódusokat használunk, és új függvényeket importálunk, valamint azonosítani szeretnénk a kód tulajdonságait.

Ezeket a függvényeket fogjuk használni annak érdekében, hogy beazonosítsuk és katalogizáljuk a padláson tárolt tárgyakat. Kezdésként sétálj abba a sötét X jelölésű ponthoz, amely a színes szőnyegek felett van, kezdve a piros szőnyeg fölötti ponttól. Ebben a területen három (3) állandó található: red_container, green_container és blue_container, ezek az állandók mindegyik szőnyegnek megfelelő ládában lévő tartályokat képviselik.

Minden X jelölésnél fordulj a ládához, és használd az open() függvényt a láda kinyitásához, majd használd a collect() függvényt a megfelelő színes szőnyeget jelző állandóval, hogy azt kivesd a ládából. Használd a type() introspekciós függvényt, hogy beazonosítsd, milyen típusú állandó található a ládában, a kimenet nyers adatot ad, ezért használd a repr() függvényt az átalakításához, hogy szöveggé legyen. Használd a speak() függvényt a kapott szöveg megjelenítéséhez, amely a függvények és az állandó kombinációjából jön létre, például: player.speak(repr(type(red_container))). Ezt kövesd a speak() függvénnyel, amely az állandót közvetlenül jeleníti meg, például: player.speak(red_container).

Miután mind a három (3) állandót összegyűjtötted, introspektáltad és beazonosítottad, sétálj arra a világos X jelölésű ponthoz, amely az asztal előtt található. Hozz létre három változót a következő nevekkel: item_id_red, item_id_green, item_id_blue, ezek lesznek a számszerű azonosítók tárolására az összegyűjtött állandókhoz. Használd az id() introspekciós függvényt, hogy lekérd az állandó egyedi azonosítószámát úgy, hogy azt argumentumként adod meg. Illeszd a változó nevét az állandó nevéhez a következő formátum szerint: item_id_red = id(red_container), ismételd meg ezt mind a három (3) változóra és állandóra.

Amint mindhárom (3) változó feltöltésre került, tárold őket egy item_list nevű listában, és a világos X jelölésű pontnál használd a display() függvényt, hogy megbizonyosodj arról, hogy az fel lett tüntetve az asztalon lévő memo-ban, például: await player.display(item_list).

Miután a lista fel lett jegyezve, sétálj arra a sötét X jelölésű ponthoz, amely a lila szőnyeg felett található, és fordulj az asztal felé. Itt a dir() függvényt fogjuk használni annak beazonosítására, hogy milyen attribútumai vannak a listának, azonban a kimenet nyers adat, amely nehezen jeleníthető meg. Ehhez használd a repr() függvényt adatok átalakításához olvasható szöveggé. Hozz létre egy item_attributes nevű változót, és tárold benne a kapott szöveget, például: item_attributes = repr(dir(item_list)). Végül használd a display() függvényt, hogy az asztalon lévő memo-ban szintén fel legyen tüntetve.

Sétálj arra a sötét X jelölésű ponthoz, amely a fehér szőnyeg felett van, és ismételd meg a dir() során végzett műveletet, de ezúttal a help() függvénnyel, amely az objektum minden dokumentációs használatát ismerteti. Hozz létre egy item_help nevű változót, és tárold benne a kapott szöveget, például: item_help = repr(help(item_list)). Végül használd a read() függvényt, hogy az asztalon lévő memo-ban is fel legyen tüntetve, ezzel befejezve a szintet.

Kódkönyv