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 ifbetingede 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.








