logo

__namn__ i Python

Namnet på Python-skriptet eller modulen som körs för närvarande lagras i Pythons specialvariabel __name__. Python 3.0 introducerade variabeln __name__, som saknas i Python 2. x. Det aktuella Python-skriptet eller modulens värde, __main__, tilldelas variabeln __name__ medan den körs.

Vad betyder _namn_?

Python har en inbyggd variabel som heter __name__ som lagrar namnet på skriptet eller modulen som körs för närvarande. Skriptet eller modulnamnet lagras i variabeln __name__ om inte den aktuella modulen körs, i vilket fall värdet __main__ tilldelas den.

Följaktligen, när ett Python-skript körs, bör värdet på dess __name__-variabel alltid vara __main__ om den importeras till ett annat Python-skript. Om inte, visas modulens namn.

Exempel:

För att ytterligare förstå detta, låt oss använda ett exempel. Göra en skript i Python som heter testing.py, och lägg till följande kod till den:

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

Produktion:

css för textbrytning
 Value of the __name__ : __main__ 

Förklaring:

Skriptet körs omedelbart som huvudprogrammet, vilket indikeras av utgången 'Värde på namnet: huvud'. I Python sätts värdet på skriptets variabel __name__ automatiskt till '__main__' när skriptet körs direkt. Denna utdata bekräftar att skriptet körs direkt istället för att importeras som en modul till ett annat skript

Låt oss nu bygga ett annat Python-skript som heter mains.py och importera den föregående till den.

Exempel:

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

Produktion:

 Value of the __name__ : testing 

Förklaring:

testning. anything() är metoden som körs när skriptet testing.py importeras till ett annat Python-skript med hjälp av importtestning. I den här situationen ställs modulens namn, i det här fallet 'testning', in som värdet på variabeln __name__ i testing.py snarare än '__main__'. Av denna anledning, resultatet av testning. any() är 'Värde för __name__: testning.' Detta illustrerar hur att köra skriptet direkt kontra att importera det som en modul påverkar värdet på variabeln __name__.

Använda villkoret if name == main :

Vi använder om uttalande och tillståndet __namn__ == __huvud__ att deklarera det viss Python-kod bör bara vara utförs när skriptet körs direkt .

java designmönster

Exempel:

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

I det här fallet kontrolleras den aktuella modulens eller skriptets förmåga att köras oberoende med hjälp av strängen __main__. För att indikera för Python-tolken att ett nyckelord i variabeln __name__ är reserverat eller speciellt, finns det två understreck på vardera sidan av termen.

strängfunktioner java

Kodexempel för namn i Python:

Som sagt tidigare, när vi kör en kodfil, utförs koden direkt - den importeras inte ens till en annan fil - och som ett resultat ändras värdet på variabeln __name__ till __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. 

Förklaring:

Funktionen anything() som anges i skriptet ScriptP1 körs direkt som huvudprogrammet, vilket visas av utdata 'Det är en funktion i ScriptP1'. följt av 'Ringad från ScriptP1.' När skriptet körs direkt i Python, ställs variabeln __name__ till '__main__'; Följaktligen utvärderas villkoret if __name__=='__main__': till True, vilket anropar funktionen any(). Utskriftssatsen som följer verifierar att skriptet verkligen körs direkt.

Låt oss nu skapa en ny Python-skriptfil med namnet ScriptP2.py, importera ScriptP1.py till den och försöka kalla ScriptP1-metoden för något().

Kod: De ScriptP2.py koden tillhandahålls här:

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

Produktion:

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

Förklaring:

Det medföljande Python-skriptet visar hur man importerar modulen 'ScriptP1' till det aktiva skriptet. Metoden 'anything()' finns i 'ScriptP1' och den kallas i huvudskriptet. Den här funktionen anropas och skriptet matar ut 'Anropad från ScriptP2.' för att indikera att funktionsanropet har slutförts. Detta flöde av händelser indikerar att funktionen som specificerats i 'ScriptP1' var tillgänglig och framgångsrikt utförd i sammanhanget för skriptet som nu körs, vilket identifieras som 'ScriptP2'.

När importsatsen för ScriptP1 kördes inuti ScriptP2 hade variabeln __name__ värdet ScriptP1 (modulnamnet); men eftersom ScriptP2 var det första skriptet som kördes kommer det nu att ha värdet __main__.

Skriver ut värdet av __namn__ :

Låt oss skriva ut värdet på variabeln __name__ vid varje exekveringsstadium för att hjälpa dig förstå den bättre.

Exempel: ScriptP1.py Python-skriptets källkod finns nedan:

ladda ner youtube vlc media player
 print('Value or the variable __name__ : ' + __name__) 

Produktion:

 Value or the variable __name__ : __main__ 

Förklaring:

Provet av Python-kod som tillhandahålls matar ut värdet för variabeln __name__, som, när skriptet körs direkt, utvärderas till 'main'. Det betyder att när skriptet startas direkt, kommer kodblocket som kommer efter villkoret if __name__ == '__main__': att köras i stället för att importeras som en modul till ett annat skript. Den här typen av beteende används ofta för att skilja mellan att köra ett skript som den primära applikationen och att importera det till ett annat skript som en modul.

Exempel 2: Och här är skriptet ScriptP2.pys källkod:

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

Produktion:

 Value or the variable __name__ : __main__ 

Förklaring:

Det medföljande Python-skriptet använder importsatsen för att importera filen 'ScriptP1.py. ' När den körs skrivs 'main' ut som värdet på variabeln __name__. Detta innebär att istället för att importeras som en modul till ett annat skript, exekveras skriptet direkt som den primära applikationen. När du kör Python-skript är detta det vanliga beteendet; skriptets exekveringskontext återspeglas i variabeln __name__.

Sammanfattning:

I de flesta programmeringsspråk används vanligtvis huvudmetoden eller funktionen som den punkt där ett program utförs. Men hur är det med Python? Körning av ett Python-program (skript) börjar normalt på rad noll eller programmets indragsnivå 0. Skapandet av en __name__-variabel sker dock innan ett Python-program körs. Denna variabel kan användas för att ersätta huvudmetoden i Python.