logo

__navn__ i Python

Navnet på Python-skriptet eller modulen som kjøres for øyeblikket er lagret i Pythons spesialvariabel __name__. Python 3.0 introduserte variabelen __name__, som er fraværende i Python 2. x. Det gjeldende Python-skriptet eller modulens verdi, __main__, er tilordnet __name__-variabelen mens den kjøres.

Hva betyr _navn_?

Python har en innebygd variabel kalt __name__ som lagrer navnet på skriptet eller modulen som kjøres for øyeblikket. Skriptet eller modulnavnet lagres i __name__-variabelen med mindre den gjeldende modulen kjører, i så fall er verdien __main__ tilordnet den.

Følgelig, når et Python-skript kjøres, bør verdien av variabelen __name__ alltid være __main__ hvis den importeres til et annet Python-skript. Hvis ikke, vil modulens navn vises.

Eksempel:

For å forstå dette ytterligere, la oss bruke et eksempel. Lage en skript i Python kalt testing.py, og legg til følgende kode til den:

 # Code to define a function def anything(): print('Value of the __name__ : ', __name__) anything() 

Produksjon:

bash while loop
 Value of the __name__ : __main__ 

Forklaring:

Skriptet kjører umiddelbart som hovedprogrammet, som indikert av utdata 'Verdi av navnet: hoved.' I Python settes verdien til skriptets __name__-variabel automatisk til '__main__' når skriptet kjøres direkte. Denne utgangen bekrefter at skriptet kjøres direkte i stedet for å importeres som en modul til et annet skript

La oss nå bygge et annet Python-skript kalt mains.py og importer den forrige inn i den.

Eksempel:

 # importing testing.py import testing testing.anything() 

Produksjon:

 Value of the __name__ : testing 

Forklaring:

testing. anything() er metoden som kjøres når skriptet testing.py importeres til et annet Python-skript ved hjelp av importtesting. I denne situasjonen settes navnet på modulen, i dette tilfellet 'testing', som verdien av variabelen __name__ i testing.py i stedet for '__main__'. Av denne grunn, utgangen av testing. anything() er 'Verdi av __navn__: testing.' Dette illustrerer hvordan kjøring av skriptet direkte kontra import av det som en modul påvirker verdien av __name__-variabelen.

Bruke betingelsen hvis navn == main :

Vi bruker hvis uttalelse og tilstanden __navn__ == __main__ å erklære det viss Python-kode bare skal være utføres når skriptet kjøres direkte .

Eksempel:

 # importing testing.py import testing if __name__ == __main__: testing.anything() 

I dette tilfellet blir den gjeldende modulen eller skriptets evne til å kjøre uavhengig konstatert ved hjelp av strengen __main__. For å indikere for Python-tolkeren at et nøkkelord i variabelen __name__ er reservert eller spesielt, er det to understrekinger på hver side av begrepet.

Kodeeksempel for navn i Python:

Som sagt før, når vi kjører en kodefil, utføres koden direkte - den blir ikke engang importert til en annen fil - og som et resultat endres verdien av variabelen __name__ til __main__.

 # 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.') 

Produksjon:

 It is a function in the ScriptP1. Called from the ScriptP1. 

Forklaring:

Funksjonen any() spesifisert i scriptet ScriptP1 kjøres direkte som hovedprogrammet, som vist av utdata 'Det er en funksjon i ScriptP1.' etterfulgt av 'Called from the ScriptP1.' Når skriptet kjøres direkte i Python, settes __name__ variabelen til '__main__'; følgelig, betingelsen if __name__=='__main__': evalueres til True, og kaller funksjonen any(). Utskriftserklæringen som følger bekrefter at skriptet faktisk kjøres direkte.

govinda skuespiller

La oss nå lage en ny Python-skriptfil med navnet ScriptP2.py, importere ScriptP1.py til den, og prøve å kalle ScriptP1-metoden for any().

Kode: De ScriptP2.py koden er gitt her:

 import ScriptP1 if __name__=='__main__': ScriptP1.anything() print('Called from the ScriptP2.') 

Produksjon:

 ScriptP1 is imported into another file. It is a function in the ScriptP1. Called from the ScriptP2. 

Forklaring:

Det medfølgende Python-skriptet viser hvordan du importerer 'ScriptP1'-modulen til det aktive skriptet. Metoden 'anything()' er til stede i 'ScriptP1', og den kalles i hovedskriptet. Denne funksjonen kalles, og skriptet gir ut 'Called from the ScriptP2.' for å indikere at funksjonsanropet er fullført. Denne flyten av hendelser indikerer at funksjonen spesifisert i 'ScriptP1' var tilgjengelig og vellykket utført i sammenheng med skriptet som nå kjører, som er identifisert som 'ScriptP2'.

Når importsetningen for ScriptP1 ble kjørt inne i ScriptP2, hadde variabelen __name__ verdien ScriptP1 (modulnavnet); men siden ScriptP2 var det første skriptet som kjørte, vil det nå ha verdien __main__.

Skrive ut verdien av __navn__ :

La oss skrive ut verdien av __name__-variabelen på hvert trinn av utførelse for å hjelpe deg å forstå den bedre.

Eksempel: ScriptP1.py Python-skriptets kildekode er gitt nedenfor:

 print('Value or the variable __name__ : ' + __name__) 

Produksjon:

 Value or the variable __name__ : __main__ 

Forklaring:

java hei-program

Eksemplet med Python-kode som leveres gir ut verdien til variabelen __name__, som, når skriptet kjøres direkte, evalueres til 'main'. Det betyr at når skriptet startes direkte, vil kodeblokken som kommer etter betingelsen if __name__ == '__main__': kjøre i stedet for å bli importert som en modul til et annet skript. Denne typen oppførsel brukes ofte for å skille mellom å kjøre et skript som den primære applikasjonen og å importere det til et annet skript som en modul.

Eksempel 2: Og her er skriptet ScriptP2.pys kildekode:

 # importing the file ScriptP1.py import ScriptP1 print('Value or the variable __name__ : ' + __name__) 

Produksjon:

 Value or the variable __name__ : __main__ 

Forklaring:

Det medfølgende Python-skriptet bruker importsetningen til å importere filen 'ScriptP1.py. ' Når den utføres, skrives 'main' ut som verdien av variabelen __name__. Dette betyr at i stedet for å bli importert som en modul til et annet skript, kjøres skriptet direkte som den primære applikasjonen. Når du kjører Python-skript, er dette den vanlige oppførselen; skriptets utførelseskontekst gjenspeiles i variabelen __name__.

Sammendrag:

I de fleste programmeringsspråk blir hovedmetoden eller funksjonen vanligvis brukt som punktet der ethvert program utføres. Men hva med Python? Utførelse av et Python-program (skript) starter normalt på linje null eller programmets innrykknivå 0. Opprettelsen av en __name__-variabel skjer imidlertid før et Python-program kjøres. Denne variabelen kan brukes til å erstatte hovedmetoden i Python.