logo

__navn__ i Python

Navnet på det Python-script eller det modul, der aktuelt udføres, er gemt i Pythons __name__ specialvariabel. Python 3.0 introducerede variablen __name__, som er fraværende i Python 2. x. Det aktuelle Python-script eller moduls værdi, __main__, tildeles variablen __name__, mens den køres.

Hvad betyder _navn_?

Python har en indbygget variabel kaldet __name__, der gemmer navnet på scriptet eller modulet, der i øjeblikket udføres. Scriptet eller modulnavnet gemmes i variablen __name__, medmindre det aktuelle modul kører, i hvilket tilfælde værdien __main__ er tildelt det.

Når et Python-script udføres, skal værdien af ​​dets __name__-variabel derfor altid være __main__, hvis det importeres til et andet Python-script. Hvis ikke, vises modulets navn.

Eksempel:

For yderligere at forstå dette, lad os bruge et eksempel. Lav en script i Python kaldet testing.py, og tilføj følgende kode til det:

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

Produktion:

bash while loop
 Value of the __name__ : __main__ 

Forklaring:

Scriptet kører med det samme som hovedprogrammet, som angivet af outputtet 'Værdi af navnet: hoved'. I Python indstilles værdien af ​​scriptets __name__ variabel automatisk til '__main__', når scriptet udføres direkte. Dette output bekræfter, at scriptet køres direkte i stedet for at blive importeret som et modul til et andet script

Lad os nu bygge et andet Python-script kaldet mains.py og importer den forrige ind i den.

Eksempel:

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

Produktion:

 Value of the __name__ : testing 

Forklaring:

afprøvning. anything() er den metode, der køres, når scriptet testing.py importeres til et andet Python-script ved hjælp af importtest. I denne situation indstilles modulets navn, i dette tilfælde 'testing', som værdien af ​​variablen __name__ i testing.py i stedet for '__main__'. Af denne grund, output af test. any() er 'Værdi af __navn__: test.' Dette illustrerer, hvordan kørsel af scriptet direkte i forhold til at importere det som et modul påvirker værdien af ​​variablen __name__.

Brug af betingelsen hvis navn == main :

Vi bruger hvis erklæring og tilstanden __navn__ == __hoved__ at erklære det bestemt Python-kode kun skulle være udføres, når scriptet køres direkte .

Eksempel:

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

I dette tilfælde fastslås det aktuelle moduls eller scripts evne til at køre uafhængigt ved hjælp af strengen __main__. For at indikere over for Python-fortolkeren, at et nøgleord i variablen __name__ er reserveret eller specielt, er der to understregninger på hver side af udtrykket.

Kodeeksempel for navn i Python:

Som sagt før, når vi kører en kodefil, udføres koden direkte - den importeres ikke engang til en anden fil - og som et resultat ændres værdien af ​​__name__ variablen 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.') 

Produktion:

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

Forklaring:

Funktionen any() specificeret i scriptet ScriptP1 køres direkte som hovedprogrammet, som vist ved outputtet 'Det er en funktion i ScriptP1'. efterfulgt af 'Called from the ScriptP1.' Når scriptet køres direkte i Python, sættes variablen __name__ til '__main__'; følgelig evalueres betingelsen if __name__=='__main__': til True, hvilket kalder funktionen any(). Udskriftserklæringen, der følger, bekræfter, at scriptet faktisk køres direkte.

java operatør

Lad os nu lave en ny Python-scriptfil ved navn ScriptP2.py, importere ScriptP1.py til den og prøve at kalde ScriptP1-metoden for noget().

Kode: Det ScriptP2.py kode er angivet her:

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

Produktion:

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

Forklaring:

Det medfølgende Python-script viser, hvordan man importerer 'ScriptP1'-modulet til det aktive script. Metoden 'anything()' er til stede i 'ScriptP1', og den kaldes i hovedscriptet. Denne funktion kaldes, og scriptet udsender 'Called from the ScriptP2'. for at angive, at funktionskaldet er afsluttet. Denne strøm af hændelser indikerer, at den funktion, der er angivet i 'ScriptP1', var tilgængelig og udført med succes i sammenhæng med det script, der nu kører, som er identificeret som 'ScriptP2'.

Da importsætningen for ScriptP1 blev kørt inde i ScriptP2, havde variablen __name__ værdien ScriptP1 (modulnavnet); men da ScriptP2 var det første script til at køre, vil det nu have værdien __main__.

Udskrivning af værdien af ​​__navn__ :

Lad os udskrive værdien af ​​variablen __name__ på hvert trin i udførelsen for at hjælpe dig med at forstå den bedre.

Eksempel: ScriptP1.py Python-scriptets kildekode er angivet nedenfor:

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

Produktion:

 Value or the variable __name__ : __main__ 

Forklaring:

java hej program

Eksemplet af Python-kode, der leveres, udsender værdien af ​​variablen __name__, som, når scriptet køres direkte, evalueres til 'main'. Det betyder, at når scriptet startes direkte, vil kodeblokken, der kommer efter betingelsen if __name__ == '__main__': køre i stedet for at blive importeret som et modul til et andet script. Denne form for adfærd bruges ofte til at skelne mellem at udføre et script som det primære program og at importere det til et andet script som et modul.

Eksempel 2: Og her er scriptet ScriptP2.py's kildekode:

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

Produktion:

 Value or the variable __name__ : __main__ 

Forklaring:

Det medfølgende Python-script bruger import-sætningen til at importere filen 'ScriptP1.py. ' Når den udføres, udskrives 'main' som værdien af ​​variablen __name__. Det betyder, at i stedet for at blive importeret som et modul til et andet script, bliver scriptet eksekveret direkte som det primære program. Når du udfører Python-scripts, er dette den sædvanlige adfærd; scriptets eksekveringskontekst afspejles i variablen __name__.

Resumé :

I de fleste programmeringssprog bruges hovedmetoden eller funktionen normalt som det punkt, hvor ethvert program udføres. Men hvad med Python? Udførelse af et Python-program (script) starter normalt ved linje nul eller programmets indrykningsniveau 0. Oprettelse af en __name__-variabel sker dog før et Python-program kører. Denne variabel kan bruges til at erstatte hovedmetoden i Python.