I denne vejledning lærer vi, hvordan man bruger et Python-programs __name__-attribut til at køre det dynamisk i forskellige sammenhænge.
Hvad er hovedfunktionen () i Python?
Nogle programmeringssprog har en speciel funktion kaldet main()
udførelsespunktet for en programfil. Python-tolk kører imidlertid hver linje serielt fra toppen af filen og har ingen eksplicit main()
funktion.
Python tilbyder andre konventioner til at definere udførelsespunktet. En af dem bruger main()
funktionen og egenskaben __name__ for en python-fil.
Hvad er __name__ i Python?
Variablen __name__ er en speciel indbygget Python-variabel, der viser navnet på det aktuelle modul.
Det har forskellige værdier afhængigt af hvor vi udfører Python-filen. Lad os se på et eksempel.
Kørsel af Python-fil som et script
Antag, at vi har en Python-fil kaldet helloworld.py med følgende indhold:
print(__name__)
Hvis vi kører helloworld.py fra kommandolinjen, kører den som et Python-script. Vi kan køre Python-programmet ved hjælp af følgende kommando:
$ python helloworld.py
Når vi kører programmet som et script, er værdien af variablen __name__ indstillet til __main__. Så resultatet af det følgende program vil være:
__hoved__
Kører Python-fil som et modul
Vi kan også køre en Python-fil som et modul. Til dette er vi nødt til at importere denne fil til et andet Python-program. Lad os se på et eksempel.
Antag, at vi har en Python-fil kaldet main.py i samme bibliotek som heloworld.py-filen. Det har følgende indhold:
import helloworld
Når vi kører denne fil, har vi følgende output:
Hej Verden
Her kan vi se, at import af et modul også kører al kode i modulfilen.
Men vi kan se, at i stedet for at vise __main__, viser programmet navnet på modulet, dvs. helloworld.
Det skyldes, at navnet på selve modulet i forbindelse med kørsel af en Python-fil som et modul er tildelt variablen __name__.
Brug hvis betinget med __name__
Nu hvor vi har forstået, hvordan __name__-variablen tildeles værdier, kan vi bruge den if
betingede klausul til at køre den samme Python-fil forskelligt i forskellige sammenhænge.
Lad os se på et eksempel.
Antag, at vi ændrer indholdet af helloworld.py- filen til følgende:
def main(): print("Hello World") if __name__=="__main__": main()
Nu, når vi kører det som et script via kommandolinjen, vil output være:
Hej Verden
Men når vi kører det som et modul ved at importere det til main.py- filen, vises der ingen output, da main()
funktionen ikke kaldes.
Her har vi oprettet en brugerdefineret main()
funktion i helloworld.py- filen. Det udføres kun, når programmet køres som et enkeltstående script og ikke som et importeret modul.
Dette er standardmetoden til eksplicit at definere main()
funktionen i Python. Det er en af de mest populære brugstilfælde af __name__-variablen i en Python-fil.