I den här handledningen lär vi oss hur man använder ett Python-programmets __name__-attribut för att köra det dynamiskt i olika sammanhang.
Vad är huvudfunktionen () i Python?
Vissa programmeringsspråk har en speciell funktion som kallas main()
exekveringspunkten för en programfil. Python-tolk kör dock varje rad seriellt från toppen av filen och har ingen uttrycklig main()
funktion.
Python erbjuder andra konventioner för att definiera exekveringspunkten. En av dem använder main()
funktionen och egenskapen __name__ för en pythonfil.
Vad är __name__ i Python?
Variabeln __name__ är en speciell inbyggd Python-variabel som visar namnet på den aktuella modulen.
Det har olika värden beroende på var vi kör Python-filen. Låt oss titta på ett exempel.
Kör Python-fil som ett skript
Anta att vi har en Python-fil som heter helloworld.py med följande innehåll:
print(__name__)
Om vi kör helloworld.py från kommandoraden, körs det som ett Python-skript. Vi kan köra Python-programmet med följande kommando:
$ python helloworld.py
När vi kör programmet som ett skript, är värdet på variabeln __name__ inställd på __main__. Så resultatet av följande program blir:
__main__
Kör Python-fil som en modul
Vi kan också köra en Python-fil som en modul. För detta måste vi importera den här filen till ett annat Python-program. Låt oss titta på ett exempel.
Antag att vi har en Python-fil som heter main.py i samma katalog som heloworld.py-filen. Den har följande innehåll:
import helloworld
När vi kör den här filen kommer vi att ha följande utdata:
Hej världen
Här kan vi se att import av en modul också kör hela koden i modulfilen.
Men vi kan se att i stället för att visa __main__, visar programmet namnet på modulen dvs helloworld.
Det beror på att namnet på själva modulen tilldelas variabeln __name__ i samband med att köra en Python-fil som en modul.
Använd om villkorligt med __name__
Nu när vi har förstått hur __name__-variabeln tilldelas värden, kan vi använda if
villkorsklausulen för att köra samma Python-fil på olika sätt i olika sammanhang.
Låt oss titta på ett exempel.
Antag att vi ändrar innehållet i filen helloworld.py till följande:
def main(): print("Hello World") if __name__=="__main__": main()
Nu, när vi kör det som ett skript via kommandoraden, kommer utmatningen att vara:
Hej världen
Men när vi kör den som en modul genom att importera den till main.py- filen visas ingen utdata eftersom main()
funktionen inte anropas.
Här har vi skapat en anpassad main()
funktion i filen helloworld.py . Det körs bara när programmet körs som ett fristående skript och inte som en importerad modul.
Detta är det vanliga sättet att uttryckligen definiera main()
funktionen i Python. Det är ett av de mest populära användningsfallet för __name__-variabel i en Python-fil.