V tomto tutoriáli sa dozvieme, ako používať atribút __name__ programu Python na jeho dynamické spustenie v rôznych kontextoch.
Aká je hlavná () funkcia v Pythone?
Niektoré programovacie jazyky majú špeciálnu funkciu, main()
ktorá sa nazýva bod vykonania programového súboru. Tlmočník jazyka Python však spúšťa každý riadok sériovo od hornej časti súboru a nemá explicitnú main()
funkciu.
Python ponúka ďalšie konvencie na definovanie bodu vykonania. Jedným z nich je použitie main()
funkcie a vlastnosti __name__ súboru python.
Čo je __name__ v Pythone?
Premenná __name__ je špeciálna zabudovaná premenná Pythonu, ktorá zobrazuje názov aktuálneho modulu.
Má rôzne hodnoty v závislosti od toho, kde spustíme súbor Python. Pozrime sa na príklad.
Spustenie súboru Python ako skriptu
Predpokladajme, že máme súbor Python s názvom helloworld.py s nasledujúcim obsahom:
print(__name__)
Ak spustíme helloworld.py z príkazového riadku, potom beží ako skript v Pythone. Program Python môžeme spustiť pomocou nasledujúceho príkazu:
$ python helloworld.py
Keď program spustíme ako skript, hodnota premennej __name__ je nastavená na __main__. Výstup nasledujúceho programu bude:
__hlavné__
Spustenie súboru Python ako modulu
Môžeme tiež spustiť súbor Python ako modul. Z tohto dôvodu musíme tento súbor importovať do iného programu Python. Pozrime sa na príklad.
Predpokladajme, že máme súbor Python s názvom main.py v rovnakom adresári ako súbor heloworld.py. Má nasledujúci obsah:
import helloworld
Keď spustíme tento súbor, budeme mať nasledujúci výstup:
helloworld
Tu vidíme, že import modulu tiež spustí celý kód v súbore modulu.
Vidíme však, že namiesto zobrazenia __main__ program zobrazuje názov modulu, tj. Helloworld.
Je to tak preto, lebo v súvislosti so spustením súboru Python ako modulu je premennej __name__ priradený názov samotného modulu.
Použitie, ak je podmienené, s __name__
Teraz, keď sme pochopili, ako sa premennej __name__ priraďujú hodnoty, môžeme pomocou if
podmienenej klauzuly spustiť ten istý súbor Python rôzne v rôznych kontextoch.
Pozrime sa na príklad.
Predpokladajme, že zmeníme obsah súboru helloworld.py na nasledujúci:
def main(): print("Hello World") if __name__=="__main__": main()
Teraz, keď ho spustíme ako skript pomocou príkazového riadku, bude výstup:
Ahoj svet
Keď ho však spustíme ako modul tak, že ho importujeme do súboru main.py , nezobrazí sa žiadny výstup, pretože táto main()
funkcia sa nehovorí.
Tu sme vytvorili vlastnú main()
funkciu v súbore helloworld.py . Vykonáva sa iba vtedy, keď je program spustený ako samostatný skript, a nie ako importovaný modul.
Toto je štandardný spôsob, ako explicitne definovať main()
funkciu v Pythone. Je to jeden z najpopulárnejších prípadov použitia premennej __name__ v súbore Python.