logo

__name__ a Pythonban

Az éppen futó Python-szkript vagy modul neve a Python __name__ speciális változójában van tárolva. A Python 3.0 bevezette a __name__ változót, amely hiányzik a Python 2-ből. x. Az aktuális Python-szkript vagy modul értéke (__main__) a __name__ változóhoz van rendelve, miközben fut.

Mit jelent a _név_?

A Python rendelkezik egy __name__ nevű beépített változóval, amely az éppen futó szkript vagy modul nevét tárolja. A szkript vagy modul neve a __name__ változóban tárolódik, kivéve, ha az aktuális modul fut, ebben az esetben a __main__ érték van hozzárendelve.

Következésképpen Python-szkript végrehajtása során a __name__ változó értékének mindig __main__-nak kell lennie, ha egy másik Python-szkriptbe importálják. Ha nem, akkor a modul neve jelenik meg.

Példa :

Ennek jobb megértéséhez használjunk egy példát. Csinálj egy testing.py nevű szkript Pythonban, és fűzze hozzá a következő kódot:

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

Kimenet:

összevonási rendezési algoritmus
 Value of the __name__ : __main__ 

Magyarázat:

A szkript azonnal fő programként fut, amint azt a „Név értéke: main” kimenet jelzi. A Pythonban a szkript __name__ változójának értéke automatikusan '__main__' lesz, amikor a szkriptet közvetlenül végrehajtják. Ez a kimenet megerősíti, hogy a szkript közvetlenül fut, nem pedig modulként importálva egy másik szkriptbe

Most készítsünk egy másik Python-szkriptet, melynek neve mains.py és importálja bele az előzőt.

Példa :

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

Kimenet:

 Value of the __name__ : testing 

Magyarázat:

np hol

tesztelés. Az any() az a metódus, amely akkor fut le, amikor a testing.py szkriptet egy másik Python-szkriptbe importálják importteszttel. Ebben az esetben a modul neve, ebben az esetben a „testing”, a testing.py fájlban a __name__ változó értékeként van beállítva, nem pedig a „__main__”. Emiatt a tesztelés kimenete. az any() a 'A __name__ értéke: tesztelés.' Ez azt szemlélteti, hogy a szkript közvetlen futtatása és a modulként történő importálás hogyan befolyásolja a __name__ változó értékét.

Az if name == main feltétel használata:

Használjuk a ha nyilatkozat és a feltétel __name__ == __main__ kijelenteni azt bizonyos Python kód csak legyen akkor kerül végrehajtásra, amikor a szkript közvetlenül fut .

Példa :

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

Ebben az esetben az aktuális modul vagy parancsfájl önálló futtatási képességét a __main__ karakterlánc segítségével állapítjuk meg. Annak jelzésére a Python értelmező számára, hogy a __name__ változóban lévő kulcsszó fenntartott vagy speciális, két aláhúzás található a kifejezés mindkét oldalán.

Példa a név kódjára Pythonban:

Mint korábban említettük, amikor egy kódfájlt futtatunk, a kód közvetlenül végrehajtásra kerül – még csak nem is importálják másik fájlba –, és ennek eredményeként a __name__ változó értéke __main__-ra változik.

 # 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.') 

Kimenet:

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

Magyarázat:

A ScriptP1 szkriptben megadott any() függvény közvetlenül a fő programként fut, amint azt a 'Ez egy függvény a ScriptP1-ben' kimenet mutatja. ezt követi a „Called from the ScriptP1”. Amikor a szkript közvetlenül a Pythonban fut, a __name__ változó értéke '__main__'; következésképpen az if __name__=='__main__': feltétele True-ra értékelődik, és az any() függvényt hívja. A következő nyomtatási utasítás ellenőrzi, hogy a szkript valóban közvetlenül fut-e.

Most készítsünk egy új Python szkriptfájlt ScriptP2.py néven, importáljuk bele a ScriptP1.py fájlt, és próbáljuk meg a ScriptP1 metódust bármit() hívni.

Kód : A ScriptP2.py kód itt található:

hoppá java-ban
 import ScriptP1 if __name__=='__main__': ScriptP1.anything() print('Called from the ScriptP2.') 

Kimenet:

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

Magyarázat:

A mellékelt Python-szkript megmutatja, hogyan importálható a „ScriptP1” modul az aktív szkriptbe. Az „anything()” metódus megtalálható a „ScriptP1”-ben, és a fő szkriptben hívják meg. Ez a függvény meghívásra kerül, és a szkript a „Called from the ScriptP2” szöveget adja ki. jelzi, hogy a függvényhívás befejeződött. Ez az eseményfolyam azt jelzi, hogy a „ScriptP1”-ben megadott funkció elérhető volt, és sikeresen végrehajtva volt a jelenleg futó szkripttel, amely „ScriptP2”-ként van azonosítva.

Amikor a ScriptP1 import utasítása a ScriptP2-n belül futott, a __name__ változó értéke ScriptP1 (a modul neve); de mivel a ScriptP2 volt az első szkript, amely lefutott, most a __main__ értéke lesz.

A __name__ értékének kinyomtatása:

Nyomtassuk ki a __name__ változó értékét a végrehajtás minden szakaszában, hogy jobban megértse.

Példa : A ScriptP1.py Python szkript forráskódja alább található:

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

Kimenet:

 Value or the variable __name__ : __main__ 

Magyarázat:

A kapott Python-kód mintája a __name__ változó értékét adja ki, amely a szkript közvetlen futtatásakor a „main” értékre változik. Ez azt jelenti, hogy amikor a szkriptet közvetlenül elindítják, az if __name__ == '__main__': feltétel után következő kódblokk lefut, ahelyett, hogy modulként importálnák egy másik szkriptbe. Ezt a fajta viselkedést gyakran használják arra, hogy különbséget tegyenek a szkript elsődleges alkalmazásként történő végrehajtása és egy másik szkriptbe modulként történő importálása között.

2. példa: És itt van a ScriptP2.py szkript forráskódja:

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

Kimenet:

 Value or the variable __name__ : __main__ 

Magyarázat:

A mellékelt Python-szkript az import utasítást használja a „ScriptP1.py” fájl importálásához. ' Amikor lefut, a 'main' a __name__ változó értékeként kerül kinyomtatásra. Ez azt jelenti, hogy ahelyett, hogy modulként importálnák egy másik szkriptbe, a szkript közvetlenül, elsődleges alkalmazásként kerül végrehajtásra. Python-szkriptek végrehajtásakor ez a szokásos viselkedés; a szkript végrehajtási környezetét a __name__ változó tükrözi.

string to int java

Összegzés:

A legtöbb programozási nyelvben általában a fő módszert vagy funkciót használják bármely program végrehajtásának pontjaként. De mi a helyzet a Pythonnal? A Python-program (script) végrehajtása általában a nulladik sorban vagy a program 0-s behúzási szintjén kezdődik. A __name__ változó létrehozása azonban a Python-program futása előtt megtörténik. Ez a változó használható a Python fő metódusának helyettesítésére.