Python Hovedfunksjon og metode: Forstå def Main()

⚡ Smart oppsummering

Python main-funksjonen markerer startpunktet der tolken begynner å kjøre et program. Definert med def main() og parret med if __name__ == “__main__” guard, skiller den gjenbrukbar modulkode fra frittstående skriptkjøring.

  • 🚀 Inngangspunkt: Hovedfunksjonen definerer hvor utførelsen begynner, slik at leserne kan følge et programs flyt fra ett tydelig startsted.
  • 🧩 def main():: Pakkping Logikken i def main() holder oppsett og utførelse atskilt fra funksjons- og klassedefinisjoner.
  • 🔒 __navn__ vakt: Hvis __name__ == “__main__”-sjekken kjører main() bare ved direkte utførelse, aldri ved import.
  • 🔁 Gjenbrukbare moduler: Beskyttet kode lar andre skript importere funksjonene dine uten å utløse hele programmet.
  • ⌨️ Kommandolinjeinndata: En main()-funksjon er det naturlige stedet å lese sys.argv-argumenter og returnere en exit-status.
  • 🤖 AI-hjelp: AI-assistenter som GitHub Copilot scaffold main() boilerplate og __name__ guard fra en kort ledetekst.

Python hoved~~POS=TRUNC

Hva er Python Hovedfunksjon?

Ocuco Python hovedfunksjon er utgangspunktet for ethvert program. Når programmet kjøres, vil Python tolken kjører koden sekvensielt. Hovedfunksjonen utføres bare når den kjøres som en Python program. Den vil ikke kjøre hovedfunksjonen hvis den importeres som en modul.

Hva er def main()-funksjonen i PythonFor å forstå dette, vurder følgende eksempelkode, som er en del av kjernen Python programmering grunnleggende:

def main() Eksempel 1

def main():
     print ("Hello World!")
print ("Guru99")

Python hoved~~POS=TRUNC

Her har vi to utskriftselementer – den ene er definert i hovedfunksjonen «Hello World!», og den andre er uavhengig, som er «Guru99”. Når du kjører funksjonen def main():

  • Bare "Guru99” utskrifter
  • og ikke koden "Hello World!"

Det er fordi vi ikke erklærte samtalen funksjonen "if__name__== "__main__".

Det er viktig at du etter å ha definert hovedfunksjonen kaller koden ved if__name__== "__main__" og deretter kjører koden, først da vil du få utgangen "hello world!" i programmeringskonsollen. Tenk på følgende kode

def main() Eksempel 2

def main():
    print("Hello World!")

if __name__ == "__main__":
    main()

print("Guru99")

Guru99 er trykt i dette tilfellet.

Python hoved~~POS=TRUNC

Her er forklaringen,

  • Når Python tolk leser en kildefil, vil den kjøre all koden som finnes i den.
  • Når Python kjører "kildefilen" som hovedprogram, setter den spesialvariabelen (__name__) til å ha en verdi ("__main__").
  • Når du utfører hovedfunksjonen i python, vil den lese "if"-setningen og sjekke om __name__ er lik __main__.
  • In Python “if__name__== “__main__” lar deg kjøre Python filer enten som gjenbrukbare moduler eller frittstående programmer.

Hvorfor bruke en main()-funksjon i Python?

Python tvinger deg ikke til å skrive en hovedfunksjon, men erfarne utviklere bruker en i nesten alle ikke-trivielle skript. def main()-mønsteret bringer orden til en fil og gjør koden trygg å gjenbruke. Her er hovedgrunnene til å bruke den:

  • Klart inngangspunkt: En main()-funksjon forteller enhver leser nøyaktig hvor programmet starter, slik at logikken er enkel å følge.
  • Gjenbrukbare moduler: Code beskyttet av if __name__ == “__main__” kjører bare ved direkte utførelse, slik at andre filer kan importere funksjonene dine uten bivirkninger.
  • Lokalt omfang: Variabler som opprettes i main() forblir lokale, noe som unngår utilsiktede kollisjoner med globale navn andre steder i modulen.
  • Enklere testing: Å isolere logikk i main() lar en testsuite kalle den direkte og sjekke resultatet.
  • Delt konvensjon: En main()-funksjon er et allment anerkjent signal om programmets startpunkt, noe som forbedrer vedlikeholdbarheten på tvers av team.

Kort sagt, en main()-funksjon er valgfri i Python, men det holder større programmer lesbare, testbare og trygge å importere.

Variabelen __name__ og Python Moduler

For å forstå viktigheten av __name__ variabel i Python hovedfunksjonsmetode, vurder følgende kode:

def main():
    print("hello world!")

if __name__ == "__main__":
    main()

print("Guru99")

print("Value in built variable name is:  ",__name__)

Variabelen __name__ og Python Moduler

Tenk nå på at koden importeres som en modul

import MainFunction

print("done")

Variabelen __name__ og Python Moduler

Her er kodeforklaringen: Som C, Python bruker == for sammenligning mens = for oppgave. Python tolk bruker hovedfunksjonen på to måter

direkte løp:

  • __navn__=__main__
  • if statement == True, og skriptet i _main_vil bli utført

importere som en modul

  • __name__= modulens filnavn
  • if statement == false, og skriptet i __main__ vil ikke bli utført

Når koden er utført, vil den se etter modulnavnet med "hvis." Denne mekanismen sikrer at hovedfunksjonen kun utføres som direkte kjøring, ikke når den importeres som en modul.

Eksemplene ovenfor er Python 3 koder, hvis du vil bruke Python 2, bør du vurdere følgende kode

def main():
  print "Hello World!"
  
if __name__== "__main__":
  main()

print "Guru99"

In Python 3, trenger du ikke bruke if__name. Følgende kode fungerer også

def main():
  print("Hello World!")
  
main()
print("Guru99")

OBS: Forsikre deg om at etter å ha definert hovedfunksjonen, lar du noe innrykk og ikke deklarere koden rett under funksjonen def main(): ellers vil det gi innrykk feil.

Slik sender du kommandolinjeargumenter til Python main()-funksjon

En main()-funksjon er det naturlige stedet å håndtere input som en bruker sender på kommandolinjen. Python lagrer disse verdiene i sys.argv-listen, som standard sys-modulen tilbyr. Det første elementet, sys.argv[0], er skriptnavnet, og hver verdi etter det er et argument levert av brukeren.

Følgende eksempel leser og skriver ut kommandolinjeargumenter fra innsiden av en main()-funksjon:

import sys

def main():
    print("Script name:", sys.argv[0])
    print("Arguments passed:", sys.argv[1:])

if __name__ == "__main__":
    main()

Hvis du lagrer filen som script.py og kjører python script.py alfa beta, skriver programmet ut skriptnavnet og listen ['alpha', 'beta']. Fordi verdiene kommer inn i main(), forblir logikken organisert og enkel å teste.

Her er noen praktiske tips når du jobber med kommandolinjeinndata:

  • Skjær av skriptnavnet: Bruk sys.argv[1:] for å bare lese argumentene brukeren skrev inn.
  • Bruk argparse for ekte verktøy: Den innebygde argparse-modulen analyserer flagg, alternativer og hjelpetekst mye tryggere enn å lese sys.argv for hånd.
  • Returner en utgangskode: Pakk inn kallet som sys.exit(main()) slik at returverdien til main() blir prosessens avslutningsstatus.
  • Valider tidlig: Sjekk antall og type argumenter øverst i main() før du kjører resten av programmet.

Dette mønsteret gjør et enkelt skript om til et pålitelig kommandolinjeverktøy mens keeping hvert trinn i en enkelt, testbar main()-funksjon.

Python main()-funksjon vs. andre programmeringsspråk

Utviklere som kommer fra C, C++eller Java forventer ofte en obligatorisk main()-funksjon. Python fungerer annerledes fordi det er et tolket språk, så tolken kjører ganske enkelt en fil fra øverste linje til bunnen. main()-funksjonen i Python er derfor en konvensjon snarere enn en regel.

  • C, C++, C# og Java: En main()-funksjon er et obligatorisk inngangspunkt. Kjøretiden kaller den automatisk, og det kan bare være én per program.
  • Python: Ingen main()-funksjon er nødvendig. Utførelsen starter på den første linjen i filen, og def main() kjører bare hvis koden din kaller den.
  • Vakten: Hvis __name__ == “__main__”-blokken gir Python et formål som ligner på en kompilert main() ved å markere kode som bare skal kjøres når filen er hovedprogrammet.

Så mens andre språk håndhever et main() inngangspunkt, Python overlater valget til deg, og tilbyr den samme klarheten gjennom konvensjon i stedet for en kompilatorregel.

Spørsmål og svar

__main__ er navnet Python gir skriptet på toppnivå, oppdaget gjennom variabelen __name__. main() er en vanlig brukerdefinert funksjon som inneholder programlogikken din. De fungerer sammen, men __main__ er et miljønavn mens main() er en funksjon.

Å plassere den sist sikrer Python har allerede definert alle funksjoner og klasser ovenfor før blokken kaller main(). Å kjøre den tidligere kan referere til navn som ennå ikke er definert og generere en NameError.

Nei. Python gir ingen spesiell betydning til navnet main. Du kan kalle entry-funksjonen hva du vil, men å kalle den main() er en sterk konvensjon som signaliserer programmets startpunkt til andre utviklere.

Ja. En main()-funksjon kan returnere en verdi, og et vanlig mønster skriver sys.exit(main()) slik at retur blir prosessens avslutningskode. Å returnere 0 signaliserer suksess, mens en verdi som ikke er null signaliserer en feil.

Uten guard kjører main() både når filen kjøres direkte og når den importeres. Andre programmer som bare ønsker å gjenbruke funksjonene, ville utløse uønsket kjøring og bivirkninger.

Hoveddelen av main() må være innrykket under def main():-linjen. Hvis du skriver neste setning flush-left, blir funksjonen uten en innrykket blokk, så Python genererer en innrykksfeil. Legg til konsistente mellomrom eller en tabulator.

GitHub Copilot autofullfører def main()-skjelettet og if __name__ == “__main__”-beskyttelsen fra en kort kommentar. Den foreslår også argumentparsing og dokumentstrenger, slik at du kan fokusere på programlogikken i stedet for standardteksten.

I AI- og maskinlæringsprosjekter er en main()-funksjon inngangspunktet for trenings- eller inferensskript. Den leser hyperparametere fra kommandolinjeargumenter, gjør verktøy importerbare for gjenbruk og gjør det enklere å teste og automatisere eksperimenter.

Oppsummer dette innlegget med: