Python Hovedfunktion og metode: Forstå def Main()

⚡ Smart opsummering

Python Funktionen main markerer startpunktet, hvor fortolkeren begynder at køre et program. Defineret med def main() og parret med if __name__ == “__main__” guarden, adskiller den genanvendelig modulkode fra separat scriptudførelse.

  • 🚀 Indgang: Hovedfunktionen definerer, hvor udførelsen begynder, så læserne kan følge et programs flow fra ét klart startsted.
  • 🧩 def main():: Wrapping Logikken i def main() holder opsætning og udførelse adskilt fra funktions- og klassedefinitioner.
  • 🔒 __navn__ vagt: Kontrollen `if __name__ == “__main__”` kører kun main() ved direkte udførelse, aldrig ved import.
  • 🔁 Genanvendelige moduler: Beskyttet kode lader andre scripts importere dine funktioner uden at udløse hele programmet.
  • ⌨️ Kommandolinjeinput: En main()-funktion er det naturlige sted at læse sys.argv-argumenter og returnere en exit-status.
  • 🤖 AI assistance: AI-assistenter som f.eks. GitHub Copilot scaffold main() boilerplate og __name__ guard fra en kort prompt.

Python Hovedfunktion

Hvad er Python Hovedfunktion?

Python hovedfunktion er udgangspunktet for ethvert program. Når programmet køres, vil Python Fortolkeren kører koden sekventielt. Hovedfunktionen udføres kun, når den køres som en Python program. Den vil ikke køre hovedfunktionen, hvis den importeres som et modul.

Hvad er def main()-funktionen i PythonFor at forstå dette, overvej følgende eksempelkode, som er en del af kernen Python programmering det grundlæggende:

def main() Eksempel 1

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

Python Hovedfunktion

Her har vi to udskriftsstykker - den ene er defineret i hovedfunktionen "Hello World!", og den anden er uafhængig, som er "Guru99". Når du kører funktionen def main():

  • Kun "Guru99" udskrifter
  • og ikke koden "Hello World!"

Det er, fordi vi ikke erklærede opkaldet funktion "if__name__== "__main__".

Det er vigtigt, at du efter at have defineret hovedfunktionen kalder koden ved if__name__== "__main__" og derefter kører koden, først da får du outputtet "hello world!" i programmeringskonsollen. Overvej følgende kode

def main() Eksempel 2

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

if __name__ == "__main__":
    main()

print("Guru99")

Guru99 er trykt i dette tilfælde.

Python Hovedfunktion

Her er forklaringen,

  • Når Python tolk læser en kildefil, vil den udføre al den kode, der findes i den.
  • Når Python kører "kildefilen" som hovedprogram, den sætter den specielle variabel (__name__) til at have en værdi ("__main__").
  • Når du udfører hovedfunktionen i python, vil den læse "if"-sætningen og kontrollere, om __name__ er lig med __main__.
  • In Python "if__name__== "__main__" giver dig mulighed for at køre Python filer enten som genanvendelige moduler eller selvstændige programmer.

Hvorfor bruge en main()-funktion i Python?

Python tvinger dig ikke til at skrive en main-funktion, men erfarne udviklere bruger en i næsten alle ikke-trivielle scripts. def main()-mønsteret bringer orden i en fil og gør koden sikker at genbruge. Her er de vigtigste grunde til at bruge det:

  • Klart indgangspunkt: En main()-funktion fortæller enhver læser præcis, hvor programmet starter, så logikken er let at følge.
  • Genanvendelige moduler: Code beskyttet af if __name__ == “__main__” kører kun ved direkte udførelse, så andre filer kan importere dine funktioner uden bivirkninger.
  • Lokalt omfang: Variabler oprettet i main() forbliver lokale, hvilket undgår utilsigtede sammenstød med globale navne andre steder i modulet.
  • Nemmere testning: Isolering af logik i main() lader en testsuite kalde den direkte og kontrollere resultatet.
  • Delt konvention: En main()-funktion er et bredt anerkendt signal for programmets startpunkt, hvilket forbedrer vedligeholdelsen på tværs af teams.

Kort sagt er en main()-funktion valgfri i Python, men det holder større programmer læsbare, testbare og sikre at importere.

Variablen __name__ og Python Moduler

For at forstå vigtigheden af ​​__name__ variabel i Python hovedfunktionsmetode, overvej følgende kode:

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

if __name__ == "__main__":
    main()

print("Guru99")

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

Variablen __name__ og Python Moduler

Overvej nu, kode importeres som et modul

import MainFunction

print("done")

Variablen __name__ og Python Moduler

Her er kodeforklaringen: Ligesom C, Python bruger == til sammenligning, mens = til opgave. Python tolk bruger hovedfunktionen på to måder

direkte løb:

  • __navn__=__hoved__
  • if statement == True, og scriptet i _main_vil blive udført

importere som et modul

  • __name__= modulets filnavn
  • if statement == false, og scriptet i __main__ vil ikke blive udført

Når koden udføres, vil den søge efter modulnavnet med "hvis." Denne mekanisme sikrer, at hovedfunktionen kun udføres som direkte kørsel, ikke når den importeres som et modul.

Ovenstående eksempler er Python 3 koder, hvis du vil bruge Python 2, overvej venligst følgende kode

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

print "Guru99"

In Python 3, behøver du ikke bruge if__name. Følgende kode virker også

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

Bemærk: Sørg for, at du efter at have defineret hovedfunktionen efterlader noget indrykning og ikke erklærer koden lige under def main():-funktionen, ellers vil det give indrykningsfejl.

Sådan sender du kommandolinjeargumenter til Python main() Funktion

En main()-funktion er det naturlige sted at håndtere input, som en bruger sender på kommandolinjen. Python gemmer disse værdier i sys.argv-listen, som standard sys-modulet leverer. Det første element, sys.argv[0], er scriptnavnet, og hver værdi efter det er et argument angivet af brugeren.

Følgende eksempel læser og udskriver kommandolinjeargumenter indefra en main()-funktion:

import sys

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

if __name__ == "__main__":
    main()

Hvis du gemmer filen som script.py og kører python script.py alfa beta, udskriver programmet scriptnavnet og listen ['alpha', 'beta']. Fordi værdierne kommer inde i main(), forbliver logikken organiseret og nem at teste.

Her er et par praktiske tips til, når du arbejder med kommandolinjeinput:

  • Fjern scriptnavnet: Brug sys.argv[1:] til kun at læse de argumenter, som brugeren har indtastet.
  • Brug argparse til rigtige værktøjer: Det indbyggede argparse-modul analyserer flag, indstillinger og hjælpetekst langt mere sikkert end at læse sys.argv i hånden.
  • Returner en exit-kode: Omslut kaldet som sys.exit(main()), så returværdien af ​​main() bliver processens exit-status.
  • Valider tidligt: Kontrollér antallet og typen af ​​argumenter øverst i main(), før du kører resten af ​​programmet.

Dette mønster forvandler et simpelt script til et pålideligt kommandolinjeværktøj, mens keeping hvert trin i en enkelt, testbar main()-funktion.

Python main()-funktionen vs. andre programmeringssprog

Udviklere fra C, C++ eller Java forventer ofte en obligatorisk main()-funktion. Python fungerer anderledes, fordi det er et fortolket sprog, så fortolkeren kører blot en fil fra den øverste linje til den nederste. Funktionen main() i Python er derfor en konvention snarere end en regel.

  • C, C++, C# og Java: En main()-funktion er et obligatorisk indgangspunkt. Runtime-funktionen kalder den automatisk, og der kan kun være én pr. program.
  • Python: Ingen main()-funktion er påkrævet. Udførelsen starter på den første linje i filen, og def main() kører kun, hvis din kode kalder den.
  • Vagten: Hvis __name__ == “__main__”-blokken giver Python et formål svarende til en kompileret main() ved at markere kode, der kun skal køre, når filen er hovedprogrammet.

Så mens andre sprog håndhæver et main() indgangspunkt, Python overlader valget til dig og tilbyder den samme klarhed gennem konvention i stedet for en compilerregel.

Ofte Stillede Spørgsmål

__main__ er navnet Python giver scriptet på topniveau, som detekteres via variablen __name__. main() er en almindelig brugerdefineret funktion, der indeholder din programlogik. De arbejder sammen, men __main__ er et miljønavn, mens main() er en funktion.

At placere den sidst sikrer Python har allerede defineret alle ovenstående funktioner og klasser, før blokken kalder main(). At køre den tidligere kan referere til navne, der endnu ikke er defineret, og generere en NameError.

Nej. Python tillægger navnet main ingen særlig betydning. Du kan kalde entry-funktionen hvad som helst, men at navngive den main() er en stærk konvention, der signalerer programmets udgangspunkt til andre udviklere.

Ja. En main()-funktion kan returnere en værdi, og et almindeligt mønster skriver sys.exit(main()), så return bliver processens exit-kode. Returnering af 0 signalerer succes, mens en værdi, der ikke er nul, signalerer en fejl.

Uden guarden kører main() både når filen udføres direkte og når den importeres. Andre programmer, der kun ønsker at genbruge dens funktioner, ville udløse uønsket udførelse og bivirkninger.

Funktionens brødtekst skal indrykkes under def main():-linjen. Hvis den næste sætning flush-left skrives, efterlades funktionen uden en indrykket blok, så Python genererer en Indrykningsfejl. Tilføj ensartede mellemrum eller en tabulator.

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

I AI- og maskinlæringsprojekter er en main()-funktion indgangspunktet for trænings- eller inferensscripts. Den læser hyperparametre fra kommandolinjeargumenter, holder værktøjer importerbare til genbrug og gør eksperimenter nemmere at teste og automatisere.

Opsummer dette indlæg med: