logo

__name__ v Pythonu

Ime skripta ali modula Python, ki se trenutno izvaja, je shranjeno v Pythonovi posebni spremenljivki __name__. Python 3.0 je predstavil spremenljivko __name__, ki je ni v Pythonu 2. x. Trenutna vrednost skripta Python ali modula, __main__, je dodeljena spremenljivki __name__ med izvajanjem.

Kaj pomeni _ime_?

Python ima vgrajeno spremenljivko, imenovano __name__, ki shrani ime skripta ali modula, ki se trenutno izvaja. Ime skripta ali modula je shranjeno v spremenljivki __name__, razen če se trenutni modul izvaja; v tem primeru mu je dodeljena vrednost __main__.

Posledično mora biti vrednost njegove spremenljivke __name__, ko se izvaja skript Python, vedno __main__, če je uvožen v drug skript Python. Če ne, se prikaže ime modula.

primer:

Da bi to bolje razumeli, uporabimo primer. Narediti skript v Pythonu, imenovan testing.py, in ji pripni naslednjo kodo:

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

Izhod:

 Value of the __name__ : __main__ 

Pojasnilo:

Skript se izvaja takoj kot glavni program, kot je označeno z izhodom 'Vrednost imena: main.' V Pythonu je vrednost spremenljivke __name__ skripta samodejno nastavljena na '__main__', ko se skript izvede neposredno. Ta rezultat potrjuje, da se skript izvaja neposredno in ne uvožen kot modul v drug skript

seznam kot niz

Sestavimo zdaj še en skript Python, imenovan mains.py in vanj uvozite prejšnjega.

primer:

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

Izhod:

 Value of the __name__ : testing 

Pojasnilo:

testiranje. Anything() je metoda, ki se zažene, ko je skript testing.py uvožen v drug skript Python z uporabo testiranja uvoza. V tem primeru je ime modula, v tem primeru 'testing', nastavljeno kot vrednost spremenljivke __name__ v testing.py namesto '__main__.' Iz tega razloga je rezultat testiranja. Anything() je 'Vrednost __name__: testiranje.' To ponazarja, kako neposredno izvajanje skripta v primerjavi z njegovim uvozom kot modula vpliva na vrednost spremenljivke __name__.

Uporaba pogoja if name == main :

Uporabljamo izjava if in stanje __ime__ == __glavni__ to izjaviti določeno kodo Python mora biti samo izvede, ko se skript zažene neposredno .

primer:

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

V tem primeru se zmožnost trenutnega modula ali skripta za samostojno izvajanje ugotovi z nizom __main__. Da tolmaču Python pokažete, da je ključna beseda v spremenljivki __name__ rezervirana ali posebna, sta na obeh straneh izraza dve podčrtaji.

Primer kode za ime v Pythonu:

Kot smo že omenili, ko zaženemo kodno datoteko, se koda izvede neposredno - sploh ni uvožena v drugo datoteko - in posledično se vrednost spremenljivke __name__ spremeni v __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.') 

Izhod:

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

Pojasnilo:

Funkcija Anything(), določena v skriptu ScriptP1, se izvaja neposredno kot glavni program, kot je prikazano v izhodu »To je funkcija v ScriptP1.« sledi 'Klicano iz skriptaP1.' Ko se skript izvaja neposredno v Pythonu, je spremenljivka __name__ nastavljena na '__main__'; posledično je pogoj if __name__=='__main__': ovrednoten na True in prikliče funkcijo karkoli(). Stavek za tiskanje, ki sledi, potrjuje, da se skript dejansko izvaja neposredno.

Sedaj pa naredimo novo skriptno datoteko Python z imenom ScriptP2.py, uvozimo vanjo ScriptP1.py in poskusimo poklicati metodo ScriptP1 karkoli().

Koda : The ScriptP2.py koda je na voljo tukaj:

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

Izhod:

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

Pojasnilo:

Priloženi skript Python prikazuje, kako uvoziti modul 'ScriptP1' v aktivni skript. Metoda 'anything()' je prisotna v 'ScriptP1' in je klicana v glavnem skriptu. Ta funkcija se pokliče in skript prikaže 'Klicano iz skriptaP2'. da označite, da je bil klic funkcije zaključen. Ta tok dogodkov kaže, da je bila funkcija, podana v 'ScriptP1', dostopna in uspešno izvedena v kontekstu skripta, ki se zdaj izvaja in je označen kot 'ScriptP2'.

Ko je bil uvozni stavek za ScriptP1 zagnan znotraj ScriptP2, je imela spremenljivka __name__ vrednost ScriptP1 (ime modula); toda ker je bil ScriptP2 prvi skript, ki se je izvajal, bo zdaj imel vrednost __main__.

Tiskanje vrednosti __name__ :

Natisnimo vrednost spremenljivke __name__ na vsaki stopnji izvajanja, da jo boste lažje razumeli.

primer: Izvorna koda skripta ScriptP1.py Python je navedena spodaj:

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

Izhod:

 Value or the variable __name__ : __main__ 

Pojasnilo:

Vzorec kode Python, ki je priložen, izpiše vrednost spremenljivke __name__, ki se pri neposrednem zagonu skripta oceni kot 'main'. To pomeni, da ko se skript zažene neposredno, se bo kodni blok, ki pride za if __name__ == '__main__': pogoj, izvajal namesto da bi bil uvožen kot modul v drug skript. Tovrstno vedenje se pogosto uporablja za razlikovanje med izvajanjem skripta kot primarne aplikacije in uvozom v drug skript kot modul.

Primer 2: In tukaj je izvorna koda skripta ScriptP2.py:

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

Izhod:

 Value or the variable __name__ : __main__ 

Pojasnilo:

Priloženi skript Python uporablja stavek import za uvoz datoteke 'ScriptP1.py. ' Ko se izvede, se 'main' natisne kot vrednost spremenljivke __name__. To pomeni, da se skript namesto uvoza kot modula v drug skript izvaja neposredno kot primarna aplikacija. Pri izvajanju skriptov Python je to običajno vedenje; kontekst izvajanja skripta se odraža v spremenljivki __name__.

Povzetek:

V večini programskih jezikov se glavna metoda ali funkcija običajno uporablja kot točka, na kateri se izvaja kateri koli program. Kaj pa Python? Izvajanje programa (skripta) Python se običajno začne pri ničelni vrstici ali ravni zamika programa 0. Ustvarjanje spremenljivke __name__ pa se zgodi, preden se program Python zažene. Ta spremenljivka se lahko uporabi za zamenjavo glavne metode v Pythonu.