Mis on (Pythoni) __name__?

Sissejuhatus muutujaks _ _name_ _ ja selle kasutamiseks Pythonis

Tõenäoliselt olete __name__muutujat näinud siis, kui olete Pythoni koodi läbinud. Allpool näete näite koodijuppi selle väljanägemise kohta:

if __name__ == '__main__': main()

Selles artiklis tahan teile näidata, kuidas saate selle muutuja abil Pythonis mooduleid luua.

Miks kasutatakse muutujat _ _name_ _?

__name__Muutuja (kaks allkriipsud enne ja pärast) on eriline Python muutuja. See saab oma väärtuse sõltuvalt sellest, kuidas me sisaldavat skripti käivitame.

Mõnikord kirjutate skripti funktsioonidega, mis võivad olla kasulikud ka teistes skriptides. Pythonis saate selle skripti importida moodulina teise skripti.

Tänu sellele erimuutujale saate otsustada, kas soovite skripti käivitada. Või soovite importida skriptis määratletud funktsioonid.

Milliseid väärtusi võib muutuja __name__ sisaldada?

Skripti käivitamisel __name__võrdub muutuja __main__. Sisaldava skripti importimisel sisaldab see skripti nime.

Heidame pilgu neile kahele kasutusjuhtumile ja kirjeldame protsessi kahe illustratsiooniga.

1. stsenaarium - käivitage skript

Oletame, et kirjutasime stsenaariuminameScript.py järgnevalt:

def myFunction(): print 'The value of __name__ is ' + __name__
def main(): myFunction()
if __name__ == '__main__': main()

Kui käivitate nameScript.py, järgitakse allolevat protsessi.

Enne kõigi teiste koodide käivitamist määratakse __name__muutuja väärtuseks __main__. Pärast sedamainja myFunctiondef avaldused on joosta. Kuna tingimus on tõene, nimetatakse põhifunktsiooni. See kutsub omakorda minu funktsiooni. See prindib välja väärtuse __main__.

2. stsenaarium - importige skript teise skripti

Kui soovime myFunctionit näiteks mõnes teises skriptis uuesti kasutada importingScript.py, võime importida nameScript.pymoodulina.

Kood importingScript.pyvõib olla järgmine:

import nameScript as ns
ns.myFunction()

Seejärel on meil kaks reguleerimisala: üks importingScriptja teine nameScript. Joonisel näete, kuidas see erineb esmakordsest kasutamisest.

__name__ImportingScript.py-s on muutuja väärtuseks __main__. NameScripti importimisega hakkab Python faili otsima, lisades .pymooduli nimele. Seejärel käivitab see imporditud failis sisalduva koodi.

Kuid seekordon seatud nimeskriptiks. Jällegi käivitatakse pea- ja myFunction-i def-laused. Kuid nüüd on seisund valeks ja peamist ei nimetata.

ImportingScript.py-s helistame nimefunktsiooni väljastavaks funktsiooniks myFunction. NameScripti tunneb myFunction siis, kui see funktsioon määrati.

Kui printiksite __name__importiva skripti abil, väljastaks see __main__. Selle põhjuseks on see, et Python kasutab väärtust, mis on teada impordi skripti ulatuses.

Järeldus

Selles lühikeses artiklis selgitasin, kuidas saab __name__muutujat kasutada moodulite kirjutamiseks. Neid mooduleid saate ka ise käitada. Seda saab teha, kasutades nende muutujate väärtuste muutumist sõltuvalt nende esinemise kohast.