Python

Modul kontroly jazyka Python

Modul kontroly jazyka Python

Prehľad

Už ste niekedy premýšľali, aké by to bolo super, mať moc získať zdrojový kód nejakého iného modulu Pythonu vo vašom vlastnom programe? Tým sa otvoria nápady a dvere k toľkým príležitostiam, ako je spracovanie zdrojového kódu modulu, získanie jeho dokumentačného reťazca, automatické vytváranie dokumentácie pre časť kódu. Poviem vám, to je v prípade Pythonu možné na 100% skontrolovať modul.

Modul kontroly jazyka Python

Python skontrolovať modul nám umožňuje kontrolovať objekty bežiaceho programu, získať zdrojový kód modulu, získať dokumentačný reťazec spojený s týmto modulom, prečítať podpis metódy funkcie v Pythone a oveľa viac. Týmto spôsobom môžeme vytvárať projekty, ktoré produkujú dokumentáciu živého kódu pre naše vlastné projekty. To znamená, že musíme urobiť iba potrebné komentáre k nášmu kódu Pythonu a zvyšok práce môžeme nechať na samotný Python, aby pre nás vytvoril dokumentáciu.

Pomocou ukážkového kódu

Aby sme pochopili, ako funguje Python skontrolovať modul funguje, použijeme jednu z našich vlastných definícií vzorového kódu v Pythone, ktorá iba demonštruje dedičnosť v Pythone a spôsob výroby objektov. Pozrime sa na ukážkový modul, ktorý budeme používať vo zvyšku tutoriálu tu:

def module_level_function (arg1, arg2 = 'default', * args):
„“ „Som funkcia na úrovni modulu.„“ „
local_var = arg1 * 2
návrat local_var
trieda Osoba (objekt):
"" "Definícia pre triedu osôb.„“ „
def __init __ (ja, meno):
ja.meno = meno
def get_name (self):
"Vráti názov inštancie.„
vrátiť sa.názov
person_obj = Osoba ('sample_instance')
trieda Študent (Osoba):
„“ „Toto je trieda Student, dieťa triedy Person.
„“ „
# Táto metóda nie je súčasťou triedy Person.
def do_something_else (self):
"" "Tu sa dá urobiť všetko.".„“ „
def get_name (self):
„Prepíše verziu z triedy Osoby“
návrat 'Študent (' + ja.meno + ')'

Zadefinovali sme vzorový modul, aby sme z neho mohli v ďalších príkladoch, ktoré napíšeme, začať z neho extrahovať zdrojový kód a ďalšie komponenty. Začnime.

Kontrolný modul

Vyššie uvedený modul Python je uložený v súbore s názvom linuxhint.py v rovnakom adresári, kde budeme vytvárať naše nové skripty Python. Modul v Pythone môžeme skontrolovať tak, že ho najskôr importujeme. Tento príkaz na import bude prítomný vo všetkých skriptoch, ktoré napíšeme, aj v ďalších častiach. Tu je ukážkový program, pomocou ktorého kontrolujeme náš modul:

dovoz skontrolovať
importovať linuxhint
pre meno, údaje v inšpekcii.getmembers (linuxhint):
ak meno.začína s('__'):
ďalej
print (': !r '.formát (meno, údaje))

S týmto príkazom sa dostaneme späť:

Modul kontroly jazyka Python


Výstup nám poskytuje podrobnosti o tom, koľko tried, funkcií a objektov existuje v tomto module, keď je skript spustený.

Prebieha kontrola tried v module

Vyššie uvedený príklad, ktorý sme ukázali, predstavil všetky podrobnosti modulu naraz. ak chceme získať iba informácie týkajúce sa tried v module, môžeme získať to isté ako:

dovoz skontrolovať
importovať linuxhint
pre kľúč, údaje pri kontrole.getmembers (linuxhint, skontrolovať.isclass):
print (': !r '.formát (kľúč, údaje))

Pozrime sa na výstup pre tento príkaz:

Python kontroluje triedu modulu


Výstup je úplne rovnaký, ibaže tentokrát sa na konzolu vytlačili iba definície tried.

Inšpekčné metódy v triede

Metódy sú tie, ktoré definujú správanie triedy v OOP a poskytujú informácie o tom, ako sa bude upravovať správanie objektov, keď sa tieto metódy volajú. Z tohto dôvodu je dôležité zdokumentovať všetky metódy, ktoré existujú v triede alebo module. Môžeme získať informácie týkajúce sa metódy ako je táto:

dovoz skontrolovať
z importu
importovať linuxhint
odtlačok (skontrolovať.getmembers (linuxhint.Osoba, skontrolujte.funkcia))

S týmto príkazom sa dostaneme späť:

Inšpekcia metódy triedy


Výstup iba zobrazuje definíciu metódy pre každú prítomnú metódu.

Inšpekcia predmetov triedy

Keď sledujete, koľko miesta je obsadené, keď spustíme skript v jazyku Python, je dôležité vedieť, koľko objektov pre triedu je pre danú triedu v programe vytvorených. Aby sme to vedeli, môžeme v module získať informácie aj o objektoch triedy:

dovoz skontrolovať
z importu
importovať linuxhint
osoba = linuxhint.Osoba (meno = 'inspect_getmembers')
odtlačok (skontrolovať.getmembers (osoba, skontrolovať.izmetóda))

Pozrime sa na výstup pre tento príkaz:

Inšpekčné predmety triedy


Toto tiež vytlačí adresu pamäte, kde tento objekt žije v priebehu tohto programu.

Prebieha kontrola dokumentu v triede

Dokumentačný modul modulu je časť, ktorá skutočne informuje používateľa alebo vývojára o tom, o čom tento modul je a aké funkcie poskytuje. Pomocou modulu inšpekcie môžeme získať dokumentáciu kompletného modulu, ktorá ho lepšie zdokumentuje. Pozrime sa, ako môžeme extrahovať dokumentový reťazec pre triedu:

dovoz skontrolovať
importovať linuxhint
tlač („Osoba.__doc__: ')
tlačiť (linuxhint.Osoba.__doc__)
print ()
print ('getdoc (Osoba):')
tlačiť (skontrolovať.getdoc (linuxhint.Osoba))

S týmto príkazom sa dostaneme späť:

Získava sa dokumentačný krúžok pre triedu

Kontroluje sa zdroj triedy

Nakoniec vidíme, ako môžeme extrahovať kompletný zdrojový kód triedy aj v programe Python. Toto je dôležitá vlastnosť, ktorá nám pomáha vytvárať dokumentačné nástroje o module Python. Pozrime sa na príklad v akcii:

dovoz skontrolovať
importovať linuxhint
tlačiť (skontrolovať.getsource (linuxhint.Študent))

S týmto príkazom sa dostaneme späť:

Získanie zdrojového kódu triedy

Inšpekčný zdroj metódy

Rovnakým spôsobom, ako sme extrahovali zdrojový kód triedy, budeme teraz extrahovať zdrojový kód metódy v našom programe Python:

dovoz skontrolovať
importovať linuxhint
tlačiť (skontrolovať.getsource (linuxhint.Študent.get_name))

S týmto príkazom sa dostaneme späť:

Získanie zdroja metódy v triede

Kontrola podpisu metódy

Podpis metódy poskytuje hlboký vhľad do toho, čo metóda robí a aké vstupy do nej vyžaduje. Poskytuje nám to oprávnenie dokumentovať metódu lepšie, pretože dokumentácia metódy je neúplná bez toho, aby sme vedeli, aký vstup vyžaduje. Takto môžeme extrahovať informácie súvisiace s podpisom metódy:

dovoz skontrolovať
importovať linuxhint
tlačiť (skontrolovať.podpis (linuxhint.module_level_function))

S týmto príkazom sa dostaneme späť:

Získanie podpisu metódy

Záver

V tejto lekcii sme sa pozreli na to, ako môžeme využiť modul kontroly Pythonu na sledovanie zdrojového kódu a mnohých ďalších interných funkcií programu Python. Prečítajte si viac príspevkov založených na Pythone tu.

Hry Ako zvýšiť rýchlosť FPS v systéme Linux?
Ako zvýšiť rýchlosť FPS v systéme Linux?
FPS znamená Počet snímok za sekundu. Úlohou FPS je merať snímkovú frekvenciu pri prehrávaní videa alebo herných výkonoch. Jednoducho povedané, počet n...
Hry Najlepšie hry Oculus App Lab
Najlepšie hry Oculus App Lab
Ak ste vlastníkom náhlavnej súpravy Oculus, musíte byť informovaní o bočnom nakladaní. Sideloading je proces inštalácie neuloženého obsahu do náhlavne...
Hry Top 10 hier, ktoré sa dajú hrať na Ubuntu
Top 10 hier, ktoré sa dajú hrať na Ubuntu
Platforma Windows je jednou z dominujúcich platforiem pre hry kvôli obrovskému percentu hier, ktoré sa dnes vyvíjajú na natívnu podporu systému Window...