Numele scriptului sau al modulului Python care se execută în prezent este stocat în variabila specială __name__ a lui Python. Python 3.0 a introdus variabila __name__, care este absentă din Python 2. x. Valoarea curentă a scriptului Python sau a modulului, __main__, este atribuită variabilei __name__ în timp ce este rulată.
Ce înseamnă _nume_?
Python are o variabilă încorporată numită __name__ care stochează numele scriptului sau al modulului care se execută în prezent. Scriptul sau numele modulului este stocat în variabila __name__, cu excepția cazului în care modulul curent rulează, caz în care îi este atribuită valoarea __main__.
În consecință, atunci când se execută un script Python, valoarea variabilei sale __name__ ar trebui să fie întotdeauna __main__ dacă este importată într-un alt script Python. Dacă nu, va apărea numele modulului.
Exemplu:
Pentru a înțelege mai bine acest lucru, să folosim un exemplu. A face o script în Python numit testing.py, și adăugați următorul cod la acesta:
# Code to define a function def anything(): print('Value of the __name__ : ', __name__) anything()
Ieșire:
Value of the __name__ : __main__
Explicaţie:
jframe
Scriptul rulează imediat ca program principal, așa cum este indicat de rezultatul „Valoarea numelui: principal”. În Python, valoarea variabilei __name__ a scriptului este setată automat la „__main__” atunci când scriptul este executat direct. Această ieșire confirmă că scriptul este rulat direct și nu importat ca modul într-un alt script
Acum să construim un alt script Python numit rețea.py și importați-o pe cea anterioară.
Exemplu:
# importing testing.py import testing testing.anything()
Ieșire:
Value of the __name__ : testing
Explicaţie:
testarea. any() este metoda care se rulează atunci când scriptul testing.py este importat într-un alt script Python utilizând testarea de import. În această situație, numele modulului, în acest caz „testare”, este setat ca valoare a variabilei __name__ în testing.py și nu „__main__”. Din acest motiv, rezultatul testării. any() este „Valoarea __numelui__: testare”. Aceasta ilustrează modul în care rularea directă a scriptului versus importarea lui ca modul afectează valoarea variabilei __name__.
Folosind condiția if name == main :
Noi folosim declarația dacă si starea __name__ == __main__ să declare că un anumit cod Python ar trebui să fie doar efectuată atunci când scriptul este rulat direct .
Exemplu:
# importing testing.py import testing if __name__ == __main__: testing.anything()
În acest caz, modulul curent sau capacitatea scriptului de a rula independent este determinată folosind șirul __main__. Pentru a indica interpretului Python că un cuvânt cheie din variabila __name__ este rezervat sau special, există două litere de subliniere de fiecare parte a termenului.
Exemplu de cod pentru nume în Python:
După cum s-a spus anterior, atunci când rulăm un fișier de cod, codul este efectuat direct - nici măcar nu este importat într-un alt fișier - și, ca urmare, valoarea variabilei __name__ se schimbă în __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.')
Ieșire:
It is a function in the ScriptP1. Called from the ScriptP1.
Explicaţie:
Funcția any() specificată în script-ul ScriptP1 este rulată direct ca program principal, așa cum arată rezultatul „Este o funcție în ScriptP1”. urmat de „Apelat din ScriptP1”. Când scriptul este rulat direct în Python, variabila __name__ este setată la „__main__”; în consecință, condiția if __name__=='__main__': se evaluează la True, apelând funcția any(). Declarația de imprimare care urmează verifică dacă scriptul este într-adevăr rulat direct.
Acum, să creăm un nou fișier script Python numit ScriptP2.py, să importăm ScriptP1.py în el și să încercăm să apelăm metoda ScriptP1 orice().
Cod: The ScriptP2.py codul este furnizat aici:
instanceof în java
import ScriptP1 if __name__=='__main__': ScriptP1.anything() print('Called from the ScriptP2.')
Ieșire:
ScriptP1 is imported into another file. It is a function in the ScriptP1. Called from the ScriptP2.
Explicaţie:
Scriptul Python furnizat arată cum să importați modulul „ScriptP1” în scriptul activ. Metoda „orice()” este prezentă în „ScriptP1” și este numită în scriptul principal. Această funcție este apelată, iar scriptul arată „Apelat din ScriptP2”. pentru a indica faptul că apelul de funcție a fost finalizat. Acest flux de evenimente indică faptul că funcția specificată în „ScriptP1” a fost accesibilă și realizată cu succes în contextul scriptului care rulează acum, care este identificat ca „ScriptP2”.
Când instrucțiunea de import pentru ScriptP1 a fost rulată în interiorul ScriptP2, variabila __name__ avea valoarea ScriptP1 (numele modulului); dar, deoarece ScriptP2 a fost primul script care a fost rulat, acum va avea valoarea __main__.
Imprimarea valorii __name__ :
Să tipărim valoarea variabilei __name__ la fiecare etapă de execuție pentru a vă ajuta să o înțelegeți mai bine.
Exemplu: Codul sursă al scriptului Python ScriptP1.py este furnizat mai jos:
print('Value or the variable __name__ : ' + __name__)
Ieșire:
Value or the variable __name__ : __main__
Explicaţie:
Eșantionul de cod Python furnizat afișează valoarea variabilei __name__, care, atunci când scriptul este rulat direct, evaluează ca „main”. Înseamnă că atunci când scriptul este lansat direct, blocul de cod care vine după condiția if __name__ == '__main__': va rula în loc să fie importat ca modul într-un alt script. Acest tip de comportament este folosit frecvent pentru a distinge între executarea unui script ca aplicație principală și importarea lui într-un alt script ca modul.
Exemplul 2: Și aici este codul sursă al scriptului ScriptP2.py:
# importing the file ScriptP1.py import ScriptP1 print('Value or the variable __name__ : ' + __name__)
Ieșire:
Value or the variable __name__ : __main__
Explicaţie:
Scriptul Python furnizat utilizează instrucțiunea de import pentru a importa fișierul „ScriptP1.py. ' Când este executat, „principal” este tipărit ca valoare a variabilei __name__. Aceasta înseamnă că, în loc să fie importat ca modul într-un alt script, scriptul este executat direct ca aplicație principală. Când executați scripturi Python, acesta este comportamentul obișnuit; contextul de execuție al scriptului este reflectat în variabila __name__.
Rezumat :
În majoritatea limbajelor de programare, metoda sau funcția principală este de obicei utilizată ca punct în care este executat orice program. Dar ce zici de Python? Execuția unui program Python (script) începe în mod normal la linia zero sau la nivelul de indentare al programului 0. Crearea unei variabile __name__, totuși, are loc înainte ca un program Python să ruleze. Această variabilă poate fi utilizată pentru a înlocui metoda principală în Python.