Funkcja główna jest jak punkt wejścia programu. Jednak interpreter Pythona uruchamia kod od pierwszej linii. Wykonywanie kodu rozpoczyna się od linii początkowej i przebiega linia po linii. Nie ma znaczenia, gdzie główna funkcja jest obecna, czy jest obecna, czy nie.
Ponieważ nie mamain()>funkcja w Pythonie, gdy interpreterowi zostanie wydana komenda uruchomienia programu w Pythonie, wykonywany jest kod znajdujący się na poziomie wcięcia 0. Jednak zanim to zrobi, zdefiniuje kilka specjalnych zmiennych.__name__>jest jedną z takich specjalnych zmiennych. Jeśli plik źródłowy jest wykonywany jako program główny, interpreter ustawia__name__>zmienna, aby miała wartość__main__>. Jeżeli ten plik jest importowany z innego modułu,__name__>zostanie ustawiona na nazwę modułu.
__name__>jest wbudowaną zmienną, której wynikiem jest nazwa bieżącego modułu.
Przykład:
# 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()> |
>
>
Wyjście:
Hello hey there>
Kiedy powyższy program zostanie wykonany, interpreter deklaruje początkową wartość nazwy jako główną. Gdy interpreter dotrze do instrukcji if, sprawdza wartość nazwy i gdy wartość if jest prawdziwa, uruchamia funkcję główną, w przeciwnym razie funkcja główna nie zostanie wykonana.
Główna funkcja jako moduł
Teraz, gdy importujemy skrypt Pythona jako moduł, plik__name__>zmienna otrzymuje wartość taką samą jak nazwa zaimportowanego skryptu Pythona.
Przykład: Rozważmy, że istnieją dwa pliki (File1.py i File2.py). Plik 1 wygląda następująco.
# File1.py> > print>(>'File1 __name__ = %s'> %>__name__)> > if> __name__>=>=> '__main__'>:> >print>(>'File1 is being run directly'>)> else>:> >print>(>'File1 is being imported'>)> |
>
>
Wyjście:
File1 __name__ = __main__ File1 is being run directly>
Teraz, gdy plik File1.py zostanie zaimportowany do File2.py, wartość __name__ ulegnie zmianie.
zwracanie tablic w Javie
# File2.py> > import> File1> > print>(>'File2 __name__ = %s'> %>__name__)> > if> __name__>=>=> '__main__'>:> >print>(>'File2 is being run directly'>)> else>:> >print>(>'File2 is being imported'>)> |
>
>
Wyjście:
File1 __name__ = File1 File1 is being imported File2 __name__ = __main__ File2 is being run directly>
Jak widać powyżej, gdy plik File1.py jest uruchamiany bezpośrednio, interpreter ustawia plik__name__>zmienna jak__main__>a kiedy jest uruchamiany przez File2.py poprzez import, zmienna __name__ jest ustawiana jako nazwa skryptu Pythona, tj. File1. Można zatem powiedzieć, że if __name__ == __main__ jest częścią programu, która jest uruchamiana, gdy skrypt jest uruchamiany z wiersza poleceń za pomocą polecenia takiego jak Python File1.py.