I denne opplæringen vil vi lære hvordan du bruker et Python-programmets attributt __name__ for å kjøre det dynamisk i forskjellige sammenhenger.
Hva er hovedfunksjonen () i Python?
Noen programmeringsspråk har en spesiell funksjon som kalles main()
utførelsespunktet for en programfil. Python-tolk kjører imidlertid hver linje serielt fra toppen av filen og har ingen eksplisitt main()
funksjon.
Python tilbyr andre konvensjoner for å definere utførelsespunktet. En av dem bruker main()
funksjonen og egenskapen __name__ til en python-fil.
Hva er __name__ i Python?
__Name__-variabelen er en spesiell innebygd Python-variabel som viser navnet på den gjeldende modulen.
Den har forskjellige verdier avhengig av hvor vi kjører Python-filen. La oss se på et eksempel.
Kjører Python File som et skript
Anta at vi har en Python-fil kalt helloworld.py med følgende innhold:
print(__name__)
Hvis vi kjører helloworld.py fra kommandolinjen, kjører den som et Python-skript. Vi kan kjøre Python-programmet ved hjelp av følgende kommando:
$ python helloworld.py
Når vi kjører programmet som et skript, er verdien til variabelen __name__ satt til __main__. Så resultatet av følgende program vil være:
__hoved__
Kjører Python-fil som en modul
Vi kan også kjøre en Python-fil som en modul. For dette må vi importere denne filen til et annet Python-program. La oss se på et eksempel.
Anta at vi har en Python-fil kalt main.py i samme katalog som heloworld.py-filen. Den har følgende innhold:
import helloworld
Når vi kjører denne filen, vil vi ha følgende utdata:
Hei Verden
Her kan vi se at import av en modul også kjører all koden i modulfilen.
Men vi kan se at i stedet for å vise __main__, viser programmet navnet på modulen, dvs. helloworld.
Det er fordi, i sammenheng med å kjøre en Python-fil som en modul, er navnet på selve modulen tilordnet __name__-variabelen.
Bruker hvis betinget med __name__
Nå som vi har forstått hvordan __name__-variabelen tildeles verdier, kan vi bruke den if
betingede klausulen til å kjøre den samme Python-filen på forskjellige måter i forskjellige sammenhenger.
La oss se på et eksempel.
Anta at vi endrer innholdet i helloworld.py- filen til følgende:
def main(): print("Hello World") if __name__=="__main__": main()
Nå, når vi kjører det som et skript via kommandolinjen, vil utdataene være:
Hei Verden
Men når vi kjører den som en modul ved å importere den til main.py- filen, vises ingen utdata siden main()
funksjonen ikke kalles.
Her har vi opprettet en egendefinert main()
funksjon i helloworld.py- filen. Det kjøres bare når programmet kjøres som et frittstående skript og ikke som en importert modul.
Dette er standard måten å eksplisitt definere main()
funksjonen i Python. Det er en av de mest populære tilfellene av __name__-variabelen til en Python-fil.