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.