Tässä opetusohjelmassa opitaan, kuinka Python-ohjelman __name__ -attribuuttia voidaan käyttää dynaamisesti eri tilanteissa.
Mikä on Pythonin tärkein () -funktio?
Joillakin ohjelmointikielillä on erityinen toiminto nimeltä main()
ohjelmatiedoston suorituspiste. Python-tulkki kuitenkin suorittaa jokaisen rivin sarjana tiedoston yläosasta, eikä sillä ole nimenomaista main()
toimintoa.
Python tarjoaa muita käytäntöjä suorituspisteen määrittelemiseksi. Yksi niistä käyttää main()
python-tiedoston toimintoa ja ominaisuutta __name__.
Mikä on __name__ Pythonissa?
Muuttuja __name__ on erityinen sisäänrakennettu Python-muuttuja, joka näyttää nykyisen moduulin nimen.
Sillä on erilaiset arvot riippuen siitä, missä suoritamme Python-tiedoston. Katsotaanpa esimerkkiä.
Python-tiedoston ajaminen skriptinä
Oletetaan, että meillä on Python-tiedosto nimeltä helloworld.py , jonka sisältö on seuraava:
print(__name__)
Jos suoritamme helloworld.py komentoriviltä, se toimii Python-skriptinä. Voimme suorittaa Python-ohjelman seuraavalla komennolla:
$ python helloworld.py
Kun suoritamme ohjelmaa skriptinä, muuttujan __name__ arvoksi asetetaan __main__. Joten seuraavan ohjelman tulos on:
hannu
Python-tiedoston suorittaminen moduulina
Voimme myös suorittaa Python-tiedoston moduulina. Tätä varten meidän on tuotava tämä tiedosto toiseen Python-ohjelmaan. Katsotaanpa esimerkkiä.
Oletetaan, että meillä on Python-tiedosto nimeltä main.py samassa hakemistossa kuin heloworld.py-tiedosto. Sen sisältö on seuraava:
import helloworld
Kun suoritamme tämän tiedoston, meillä on seuraava tulos:
Hei maailma
Täällä voimme nähdä, että moduulin tuominen suorittaa myös kaiken moduulitiedoston koodin.
Mutta voimme nähdä, että __main__: n näyttämisen sijaan ohjelma näyttää moduulin nimen eli helloworld.
Tämä johtuu siitä, että Python-tiedoston suorittamisen moduulina yhteydessä itse moduulin nimi annetaan muuttujalle __name__.
Jos ehdollinen käytetään __name__ kanssa
Nyt kun olemme ymmärtäneet, kuinka muuttujalle __name__ määritetään arvot, voimme käyttää if
ehdollista lauseketta saman Python-tiedoston suorittamiseen eri tavoin eri tilanteissa.
Katsotaanpa esimerkkiä.
Oletetaan, että muutamme helloworld.py- tiedoston sisällön seuraavaksi:
def main(): print("Hello World") if __name__=="__main__": main()
Nyt kun suoritamme sen komentotiedostona komentorivin kautta, tulos on
Hei maailma
Kuitenkin, kun suoritamme sen moduulina tuomalla sen main.py- tiedostoon, tulostetta ei näytetä, koska main()
toimintoa ei kutsuta.
Tässä olemme luoneet mukautetun main()
toiminnon helloworld.py- tiedostoon. Se suoritetaan vain, kun ohjelmaa suoritetaan erillisenä komentosarjanaan, ei tuotuna moduulina.
Tämä on tavanomainen tapa määritellä main()
funktio nimenomaisesti Pythonissa. Se on yksi suosituimmista Python-tiedoston muuttujan __name__ käyttötapauksista.