logo

__name__ w Pythonie

Nazwa aktualnie wykonywanego skryptu lub modułu Pythona jest przechowywana w specjalnej zmiennej Pythona __name__. W Pythonie 3.0 wprowadzono zmienną __name__, której nie ma w Pythonie 2.x. Bieżąca wartość skryptu lub modułu Pythona, __main__, jest przypisana do zmiennej __name__ podczas jego działania.

Co oznacza _imię_?

Python ma wbudowaną zmienną o nazwie __name__, która przechowuje nazwę aktualnie wykonywanego skryptu lub modułu. Nazwa skryptu lub modułu jest przechowywana w zmiennej __name__, chyba że bieżący moduł jest uruchomiony. W takim przypadku przypisana jest do niego wartość __main__.

W związku z tym, gdy wykonywany jest skrypt w języku Python, wartość jego zmiennej __name__ powinna zawsze wynosić __main__, jeśli jest ona importowana do innego skryptu w języku Python. Jeśli nie, pojawi się nazwa modułu.

Przykład :

Aby lepiej to zrozumieć, posłużymy się przykładem. Zrobić skrypt w Pythonie o nazwie testowanie.py, i dołącz do niego następujący kod:

 # Code to define a function def anything(): print('Value of the __name__ : ', __name__) anything() 

Wyjście:

 Value of the __name__ : __main__ 

Wyjaśnienie:

Skrypt jest uruchamiany natychmiast jako program główny, jak wskazuje wynik „Wartość nazwy: main”. W Pythonie wartość zmiennej __name__ skryptu jest automatycznie ustawiana na „__main__”, gdy skrypt jest wykonywany bezpośrednio. Dane wyjściowe potwierdzają, że skrypt jest uruchamiany bezpośrednio, a nie importowany jako moduł do innego skryptu

Zbudujmy teraz kolejny skrypt Pythona o nazwie mains.py i zaimportuj do niego poprzedni.

Przykład :

 # importing testing.py import testing testing.anything() 

Wyjście:

 Value of the __name__ : testing 

Wyjaśnienie:

testowanie. any() to metoda uruchamiana, gdy skrypt testujący.py jest importowany do innego skryptu Pythona za pomocą testów importu. W tej sytuacji nazwa modułu, w tym przypadku „testing”, jest ustawiana jako wartość zmiennej __name__ w pliku testowym, a nie „__main__”. Z tego powodu wynik testów. any() to „Wartość __name__: testowanie”. To ilustruje, jak bezpośrednie uruchomienie skryptu w porównaniu z importowaniem go jako modułu wpływa na wartość zmiennej __name__.

Użycie warunku if name == main :

Używamy jeśli stwierdzenie i warunek __imię__ == __główny__ to zadeklarować określony kod Pythona powinno być tylko wykonywane, gdy skrypt jest uruchamiany bezpośrednio .

Przykład :

 # importing testing.py import testing if __name__ == __main__: testing.anything() 

W tym przypadku zdolność bieżącego modułu lub skryptu do niezależnego działania jest sprawdzana za pomocą ciągu znaków __main__. Aby wskazać interpreterowi Pythona, że ​​słowo kluczowe w zmiennej __name__ jest zarezerwowane lub specjalne, po obu stronach terminu znajdują się dwa podkreślenia.

polecenie make w Linuksie

Przykład kodu dla nazwy w Pythonie:

Jak powiedziano wcześniej, kiedy uruchamiamy plik z kodem, kod jest wykonywany bezpośrednio — nie jest nawet importowany do innego pliku — w wyniku czego wartość zmiennej __name__ zmienia się na __main__.

 # defining a function def anything(): print('It is a function in the ScriptP1.') if __name__=='__main__': anything() print('Called from the ScriptP1.') else: print('ScriptP1 is imported into another file.') 

Wyjście:

 It is a function in the ScriptP1. Called from the ScriptP1. 

Wyjaśnienie:

Funkcja any() określona w skrypcie ScriptP1 jest uruchamiana bezpośrednio jako program główny, jak pokazuje wynik „To jest funkcja w skrypcie P1”. po którym następuje „Wywołane ze Skryptu P1”. Kiedy skrypt jest uruchamiany bezpośrednio w Pythonie, zmienna __name__ jest ustawiana na '__main__'; w konsekwencji warunek if __name__=='__main__': ma wartość True, wywołując funkcję any(). Poniższa instrukcja print sprawdza, czy skrypt rzeczywiście jest uruchamiany bezpośrednio.

Utwórzmy teraz nowy plik skryptu Pythona o nazwie ScriptP2.py, zaimportuj do niego ScriptP1.py i spróbujmy wywołać metodę ScriptP1 metodą any().

Kod : The SkryptP2.py kod jest podany tutaj:

 import ScriptP1 if __name__=='__main__': ScriptP1.anything() print('Called from the ScriptP2.') 

Wyjście:

 ScriptP1 is imported into another file. It is a function in the ScriptP1. Called from the ScriptP2. 

Wyjaśnienie:

Dostarczony skrypt Pythona pokazuje, jak zaimportować moduł „ScriptP1” do aktywnego skryptu. Metoda „cokolwiek()” jest obecna w „SkrypcieP1” i jest wywoływana w skrypcie głównym. Ta funkcja jest wywoływana, a skrypt wyświetla komunikat „Called from the ScriptP2”. aby wskazać, że wywołanie funkcji zostało zakończone. Ten przepływ zdarzeń wskazuje, że funkcja określona w „SkrypcieP1” była dostępna i została pomyślnie wykonana w kontekście aktualnie uruchomionego skryptu, który jest identyfikowany jako „SkryptP2”.

Kiedy instrukcja importu dla ScriptP1 została uruchomiona w ScriptP2, zmienna __name__ miała wartość ScriptP1 (nazwa modułu); ale ponieważ ScriptP2 był pierwszym uruchomionym skryptem, będzie teraz miał wartość __main__.

Drukowanie wartości __name__ :

Wydrukujmy wartość zmiennej __name__ na każdym etapie wykonywania, aby pomóc Ci lepiej to zrozumieć.

Przykład : Poniżej znajduje się kod źródłowy skryptu ScriptP1.py w języku Python:

 print('Value or the variable __name__ : ' + __name__) 

Wyjście:

obsługa ciągów w C++
 Value or the variable __name__ : __main__ 

Wyjaśnienie:

Dostarczony przykładowy kod Pythona zwraca wartość zmiennej __name__, która po bezpośrednim uruchomieniu skryptu przyjmuje wartość „main”. Oznacza to, że gdy skrypt zostanie uruchomiony bezpośrednio, blok kodu występujący po warunku if __name__ == '__main__': zostanie uruchomiony, a nie zaimportowany jako moduł do innego skryptu. Tego rodzaju zachowanie jest często używane do rozróżnienia pomiędzy wykonaniem skryptu jako aplikacji podstawowej a zaimportowaniem go do innego skryptu jako modułu.

Przykład 2: A oto kod źródłowy skryptu ScriptP2.py:

 # importing the file ScriptP1.py import ScriptP1 print('Value or the variable __name__ : ' + __name__) 

Wyjście:

 Value or the variable __name__ : __main__ 

Wyjaśnienie:

Dostarczony skrypt Pythona używa instrukcji import do importowania pliku „ScriptP1.py. ' Po wykonaniu, 'main' jest wypisywane jako wartość zmiennej __name__. Oznacza to, że zamiast importować moduł do innego skryptu, skrypt jest wykonywany bezpośrednio jako aplikacja podstawowa. Jest to typowe zachowanie podczas wykonywania skryptów w języku Python; kontekst wykonania skryptu jest odzwierciedlony w zmiennej __name__.

Streszczenie :

W większości języków programowania główna metoda lub funkcja jest zwykle wykorzystywana jako punkt, w którym wykonywany jest dowolny program. Ale co z Pythonem? Wykonywanie programu (skryptu) w języku Python zwykle rozpoczyna się od linii zerowej lub od poziomu wcięcia programu 0. Jednakże utworzenie zmiennej __name__ ma miejsce przed uruchomieniem programu w języku Python. Ta zmienna może zostać użyta do zastąpienia głównej metody w Pythonie.