Hlavná funkcia je ako vstupný bod programu. Interpret Pythonu však spúšťa kód hneď od prvého riadku. Vykonávanie kódu začína od štartovacieho riadku a prechádza riadok po riadku. Nezáleží na tom, kde je hlavná funkcia prítomná alebo je prítomná alebo nie.
Keďže neexistuje žiadnamain()>funkcia v Pythone, keď je príkaz na spustenie programu Python zadaný interpretovi, vykoná sa kód, ktorý je na úrovni 0 odsadenia. Predtým však zadefinuje niekoľko špeciálnych premenných.__name__>je jedna taká špeciálna premenná. Ak je zdrojový súbor spustený ako hlavný program, interpret nastaví__name__>premenná, aby mala hodnotu__main__>. Ak sa tento súbor importuje z iného modulu,__name__>bude nastavený na názov modulu.
__name__>je vstavaná premenná, ktorá sa vyhodnocuje podľa názvu aktuálneho modulu.
Príklad:
# Python program to demonstrate> # main() function> > > print>(>'Hello'>)> > # Defining main function> def> main():> >print>(>'hey there'>)> > > # Using the special variable> # __name__> if> __name__>=>=>'__main__'>:> >main()> |
>
>
Výkon:
Hello hey there>
Keď je vyššie uvedený program spustený, interpret deklaruje počiatočnú hodnotu name ako main. Keď tlmočník dosiahne príkaz if, skontroluje hodnotu name a keď je hodnota if pravdivá, spustí funkciu main, inak sa funkcia main nevykoná.
Hlavná funkcia ako modul
Teraz, keď importujeme skript Python ako modul__name__>premenná získa rovnakú hodnotu ako názov importovaného skriptu python.
Príklad: Uvažujme, že existujú dva súbory (File1.py a File2.py). Súbor1 je nasledovný.
# File1.py> > print>(>'File1 __name__ = %s'> %>__name__)> > if> __name__>=>=> '__main__'>:> >print>(>'File1 is being run directly'>)> else>:> >print>(>'File1 is being imported'>)> |
>
>
Výkon:
File1 __name__ = __main__ File1 is being run directly>
Teraz, keď sa súbor File1.py importuje do súboru File2.py, hodnota __name__ sa zmení.
np výplň
# File2.py> > import> File1> > print>(>'File2 __name__ = %s'> %>__name__)> > if> __name__>=>=> '__main__'>:> >print>(>'File2 is being run directly'>)> else>:> >print>(>'File2 is being imported'>)> |
>
>
Výkon:
File1 __name__ = File1 File1 is being imported File2 __name__ = __main__ File2 is being run directly>
Ako je vidieť vyššie, keď je File1.py spustený priamo, interpret nastaví__name__>variabilný ako__main__>a keď sa spustí cez File2.py importovaním, premenná __name__ sa nastaví ako názov skriptu python, t.j. File1. Dá sa teda povedať, že ak __name__ == __main__ je časť programu, ktorá sa spustí pri spustení skriptu z príkazového riadku pomocou príkazu ako Python File1.py.