Tällä hetkellä suoritettavan Python-skriptin tai moduulin nimi tallennetaan Pythonin erikoismuuttujaan __name__. Python 3.0 esitteli __name__-muuttujan, joka puuttuu Python 2:sta. x. Nykyinen Python-komentosarjan tai moduulin arvo, __main__, liitetään muuttujaan __name__, kun sitä ajetaan.
Mitä _nimi_ tarkoittaa?
Pythonissa on sisäänrakennettu muuttuja nimeltä __name__, joka tallentaa parhaillaan suoritettavan komentosarjan tai moduulin nimen. Komentosarja tai moduulin nimi tallennetaan muuttujaan __name__, ellei nykyinen moduuli ole käynnissä, jolloin sille annetaan arvo __main__.
Näin ollen Python-skriptiä suoritettaessa sen __name__-muuttujan arvon tulee aina olla __main__, jos se tuodaan toiseen Python-skriptiin. Jos ei, moduulin nimi tulee näkyviin.
Esimerkki:
Ymmärtääksemme tätä paremmin, käytetään esimerkkiä. Tehdä Pythonin komentosarja nimeltä testing.py, ja liitä siihen seuraava koodi:
# Code to define a function def anything(): print('Value of the __name__ : ', __name__) anything()
Lähtö:
Value of the __name__ : __main__
Selitys:
Komentosarja toimii välittömästi pääohjelmana, kuten tulos 'Nimen arvo: main' osoittaa. Pythonissa komentosarjan __name__-muuttujan arvoksi asetetaan automaattisesti '__main__', kun komentosarja suoritetaan suoraan. Tämä tulos vahvistaa, että komentosarjaa ajetaan suoraan sen sijaan, että se tuodaan moduulina toiseen komentosarjaan
Rakennetaan nyt toinen Python-skripti nimeltä mains.py ja tuo edellinen siihen.
Esimerkki:
# importing testing.py import testing testing.anything()
Lähtö:
Value of the __name__ : testing
Selitys:
vertailukelpoinen merkkijono
testaus. any() on menetelmä, joka suoritetaan, kun komentosarja testing.py tuodaan toiseen Python-skriptiin tuontitestauksen avulla. Tässä tilanteessa moduulin nimi, tässä tapauksessa 'testing', asetetaan testing.py-muuttujan __name__ arvoksi __main__:n sijaan. Tästä syystä testauksen tulos. any() on '__name__:n arvo: testaus.' Tämä havainnollistaa, kuinka komentosarjan suorittaminen suoraan ja sen tuominen moduulina vaikuttaa muuttujan __name__ arvoon.
Käyttämällä ehtoa if name == main :
Käytämme jos lausunto ja kunto __nimi__ == __main__ julistamaan sitä tietty Python-koodi pitäisi vain olla suoritetaan, kun komentosarja suoritetaan suoraan .
Esimerkki:
# importing testing.py import testing if __name__ == __main__: testing.anything()
Tässä tapauksessa nykyisen moduulin tai komentosarjan kyky toimia itsenäisesti varmistetaan käyttämällä merkkijonoa __main__. Ilmaista Python-tulkijalle, että avainsana muuttujassa __name__ on varattu tai erityinen, termin molemmilla puolilla on kaksi alaviivaa.
Koodiesimerkki nimelle Pythonissa:
Kuten aiemmin mainittiin, kun käytämme kooditiedostoa, koodi suoritetaan suoraan - sitä ei edes tuoda toiseen tiedostoon - ja tämän seurauksena muuttujan __name__ arvo muuttuu __main__:ksi.
# 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.')
Lähtö:
It is a function in the ScriptP1. Called from the ScriptP1.
Selitys:
Komentosarjassa ScriptP1 määritettyä funktiota any() ajetaan suoraan pääohjelmana, kuten tulos 'Se on ScriptP1:n funktio' osoittaa. jota seuraa 'Called from the ScriptP1.' Kun komentosarja suoritetaan suoraan Pythonissa, __name__-muuttuja asetetaan arvoon __main__; näin ollen ehto if __name__=='__main__': laskee arvoon True, kutsuen funktiota any(). Seuraava tulostuskäsky varmistaa, että komentosarja todellakin suoritetaan suoraan.
Tehdään nyt uusi Python-skriptitiedosto nimeltä ScriptP2.py, tuodaan ScriptP1.py siihen ja yritetään kutsua ScriptP1-metodia any().
Koodi: The ScriptP2.py koodi löytyy täältä:
import ScriptP1 if __name__=='__main__': ScriptP1.anything() print('Called from the ScriptP2.')
Lähtö:
ScriptP1 is imported into another file. It is a function in the ScriptP1. Called from the ScriptP2.
Selitys:
Mukana toimitettu Python-skripti näyttää, kuinka ScriptP1-moduuli tuodaan aktiiviseen komentosarjaan. Menetelmä 'anything()' on ScriptP1:ssä, ja sitä kutsutaan pääskriptissä. Tätä toimintoa kutsutaan ja komentosarja tulostaa 'Called from the ScriptP2'. ilmaisemaan, että funktiokutsu on suoritettu. Tämä tapahtumakulku osoittaa, että ScriptP1:ssä määritetty toiminto oli käytettävissä ja suoritettu onnistuneesti käynnissä olevan komentosarjan yhteydessä, joka on tunnistettu ScriptP2:ksi.
Kun ScriptP1:n tuontikäsky ajettiin ScriptP2:n sisällä, muuttujan __name__ arvo oli ScriptP1 (moduulin nimi); mutta koska ScriptP2 oli ensimmäinen suoritettu komentosarja, sen arvo on nyt __main__.
Kohteen __name__ arvon tulostaminen:
Tulostetaan muuttujan __name__ arvo jokaisessa suoritusvaiheessa, jotta ymmärrät sen paremmin.
Esimerkki: ScriptP1.py Python-komentosarjan lähdekoodi on alla:
print('Value or the variable __name__ : ' + __name__)
Lähtö:
Value or the variable __name__ : __main__
Selitys:
Toimitettu Python-koodinäyte tulostaa muuttujan __name__ arvon, joka, kun komentosarja suoritetaan suoraan, evaluoituu 'main'. Se tarkoittaa, että kun komentosarja käynnistetään suoraan, koodilohko, joka tulee if __name__ == '__main__': -ehdon jälkeen, suoritetaan sen sijaan, että se tuodaan moduulina toiseen komentosarjaan. Tällaista käyttäytymistä käytetään usein erottamaan komentosarjan suorittaminen ensisijaisena sovelluksena ja sen tuominen toiseen komentosarjaan moduulina.
Esimerkki 2: Ja tässä on komentosarjan ScriptP2.py lähdekoodi:
# importing the file ScriptP1.py import ScriptP1 print('Value or the variable __name__ : ' + __name__)
Lähtö:
Value or the variable __name__ : __main__
Selitys:
Mukana toimitettu Python-komentosarja käyttää tuontikäskyä tiedoston ScriptP1.py tuomiseen. ' Kun se suoritetaan, 'main' tulostetaan muuttujan __name__ arvoksi. Tämä tarkoittaa, että sen sijaan, että se tuodaan moduulina toiseen komentosarjaan, komentosarja suoritetaan suoraan ensisijaisena sovelluksena. Python-skriptejä suoritettaessa tämä on tavallista; komentosarjan suorituskonteksti näkyy muuttujassa __name__.
Yhteenveto:
Useimmissa ohjelmointikielissä päämenetelmää tai toimintoa käytetään yleensä ohjelman suorituspisteenä. Mutta entä Python? Python-ohjelman (komentosarjan) suorittaminen alkaa normaalisti riviltä nolla tai ohjelman sisennystasosta 0. Muuttujan __name__ luominen tapahtuu kuitenkin ennen Python-ohjelman suorittamista. Tätä muuttujaa voidaan käyttää Pythonin päämenetelmän korvaamiseen.