Główna funkcja Pythona

W tym samouczku nauczymy się, jak używać atrybutu __name__ programu w języku Python, aby uruchamiać go dynamicznie w różnych kontekstach.

Jaka jest funkcja main () w Pythonie?

Niektóre języki programowania mają specjalną funkcję o nazwie, main()która jest punktem wykonania pliku programu. Jednak interpreter języka Python uruchamia każdą linię szeregowo od początku pliku i nie ma żadnej jawnej main()funkcji.

Python oferuje inne konwencje definiowania punktu wykonania. Jednym z nich jest użycie main()funkcji i właściwości __name__ pliku Pythona.

Co to jest __name__ w Pythonie?

Zmienna __name__ to specjalna wbudowana zmienna Pythona, która pokazuje nazwę bieżącego modułu.

Ma różne wartości w zależności od tego, gdzie wykonujemy plik Pythona. Spójrzmy na przykład.

Uruchamianie pliku Python jako skryptu

Załóżmy, że mamy plik Pythona o nazwie helloworld.py z następującą zawartością:

 print(__name__) 

Jeśli uruchomimy helloworld.py z wiersza poleceń, to działa on jako skrypt Pythona. Możemy uruchomić program w Pythonie za pomocą następującego polecenia:

$ python helloworld.py

Kiedy uruchamiamy program jako skrypt, wartość zmiennej __name__ jest ustawiana na __main__. Zatem wynik następującego programu będzie:

 __Główny__ 

Uruchamianie pliku Pythona jako modułu

Możemy również uruchomić plik Pythona jako moduł. W tym celu musimy zaimportować ten plik do innego programu w Pythonie. Spójrzmy na przykład.

Załóżmy, że mamy plik Pythona o nazwie main.py w tym samym katalogu, co plik heloworld.py. Ma następującą zawartość:

 import helloworld 

Kiedy uruchomimy ten plik, otrzymamy następujący wynik:

 Witaj świecie 

Tutaj widzimy, że importowanie modułu uruchamia również cały kod w pliku modułu.

Ale widzimy, że zamiast wyświetlać __main__, program wyświetla nazwę modułu, czyli helloworld.

Dzieje się tak, ponieważ w kontekście uruchamiania pliku Pythona jako modułu, nazwa samego modułu jest przypisywana do zmiennej __name__.

Używanie warunku warunkowego warunkowego z __name__

Teraz, gdy zrozumieliśmy, w jaki sposób zmiennej __name__ przypisywane są wartości, możemy użyć ifklauzuli warunkowej, aby uruchomić ten sam plik Pythona w różny sposób w różnych kontekstach.

Spójrzmy na przykład.

Załóżmy, że zmienimy zawartość pliku helloworld.py na następującą:

 def main(): print("Hello World") if __name__=="__main__": main() 

Teraz, gdy uruchomimy go jako skrypt za pomocą wiersza poleceń, wynik będzie wyglądał następująco:

 Witaj świecie 

Jednak gdy uruchamiamy go jako moduł, importując go do pliku main.py , nie są wyświetlane żadne dane wyjściowe, ponieważ main()funkcja nie jest wywoływana.

Tutaj utworzyliśmy niestandardową main()funkcję w pliku helloworld.py . Jest wykonywany tylko wtedy, gdy program jest uruchamiany jako samodzielny skrypt, a nie jako zaimportowany moduł.

Jest to standardowy sposób jawnego definiowania main()funkcji w Pythonie. Jest to jeden z najpopularniejszych przypadków użycia zmiennej __name__ pliku Pythona.

Interesujące artykuły...