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.