Ebben az oktatóanyagban megtanuljuk, hogyan kell használni a Python program __name__ attribútumát annak dinamikus futtatásához a különböző kontextusokban.
Mi a Python fő () függvénye?
Néhány programozási nyelv rendelkezik egy speciális funkcióval, main()
amely egy programfájl végrehajtási pontja. A Python tolmács azonban minden sort sorosan futtat a fájl tetejétől, és nincs kifejezett main()
funkciója.
A Python más konvenciókat kínál a végrehajtási pont meghatározására. Az egyikük main()
a python fájl függvényét és __name__ tulajdonságát használja.
Mi a __name__ a Pythonban?
A __name__ változó egy speciális beépített Python változó, amely megmutatja az aktuális modul nevét.
Különböző értékekkel rendelkezik attól függően, hogy hova futtatjuk a Python fájlt. Nézzünk meg egy példát.
A Python fájl futtatása parancsfájlként
Tegyük fel, hogy van egy helloworld.py nevű Python fájlunk a következő tartalommal:
print(__name__)
Ha a helloworld.py programot a parancssorból futtatjuk , akkor Python szkriptként fut. A Python programot a következő paranccsal futtathatjuk:
$ python helloworld.py
Amikor szkriptként futtatjuk a programot, a __név__ változó értéke __fő__ lesz. Tehát a következő program kimenete a következő lesz:
__fő__
A Python fájl futtatása modulként
Futtathatunk Python fájlt is modulként. Ehhez be kell importálnunk ezt a fájlt egy másik Python programba. Nézzünk meg egy példát.
Tegyük fel, hogy van egy main.py nevű Python fájlunk a heloworld.py fájllal megegyező könyvtárban. A tartalma a következő:
import helloworld
A fájl futtatásakor a következő kimenetet kapjuk:
Helló Világ
Itt láthatjuk, hogy egy modul importálása a modulfájlban található összes kódot is futtatja.
De láthatjuk, hogy a __main__ megjelenítése helyett a program megjeleníti a modul nevét, azaz a helloworld-t.
Ennek oka, hogy a Python fájl modulként történő futtatásának összefüggésében maga a modul neve is hozzá van rendelve a __name__ változóhoz.
Ha feltételes, akkor a __name__ használatával
Most, hogy megértettük a __name__ változó hozzárendelésének értékeit, használhatjuk a if
feltételes záradékot arra, hogy ugyanazt a Python fájlt különböző futtatásban futtassuk különböző kontextusokban.
Nézzünk meg egy példát.
Tegyük fel, hogy a helloworld.py fájl tartalmát a következőre módosítjuk :
def main(): print("Hello World") if __name__=="__main__": main()
Most, amikor parancsfájlként futtatjuk a parancssoron keresztül, a kimenet a következő lesz:
Helló Világ
Amikor azonban modulként futtatjuk a main.py fájlba importálva , nem jelenik meg kimenet, mivel a main()
függvény nincs meghívva.
Itt létrehoztunk egy egyedi main()
függvényt a helloworld.py fájlban. Csak akkor hajtódik végre, ha a program önálló parancsfájlként fut, és nem importált modulként.
Ez a szokásos módszer a main()
függvény kifejezett meghatározására a Pythonban. Ez a Python fájl __name__ változójának egyik legnépszerűbb felhasználási esete.