Python Hoofdfunctie en -methode: Begrijp def Main()
โก Slimme samenvatting
Python De `main`-functie markeert het startpunt waar de interpreter een programma begint uit te voeren. Deze functie, gedefinieerd met `def main()` en gekoppeld aan de `if __name__ == โ__main__โ`-voorwaarde, scheidt herbruikbare modulecode van de uitvoering van zelfstandige scripts.

Wat is Python Hoofdfunctie?
De Python hoofdfunctie is het startpunt van elk programma. Wanneer het programma wordt uitgevoerd, Python De interpreter voert de code sequentieel uit. De hoofdfunctie wordt alleen uitgevoerd wanneer deze als zodanig wordt uitgevoerd. Python Het programma zal de hoofdfunctie niet uitvoeren als deze als module is geรฏmporteerd.
Wat is de functie def main()? PythonOm dit te begrijpen, bekijk de volgende voorbeeldcode, die deel uitmaakt van de kern. Python programmering basisprincipes:
def main() Voorbeeld 1
def main():
print ("Hello World!")
print ("Guru99")
Hier zien we twee afdrukken: de ene is gedefinieerd binnen de hoofdfunctie en luidt "Hello World!", de andere is onafhankelijk en luidt "Guru99โ. Wanneer je de functie def main() uitvoert:
- Enkel en alleen "Guru99โ print uit
- en niet de code โHallo wereld!โ
Het is omdat we de oproep niet hebben gemeld functie โif__name__== โ__main__โ.
Het is belangrijk dat u na het definiรซren van de hoofdfunctie de code aanroept met if__name__== โ__main__โ en vervolgens de code uitvoert. Alleen dan krijgt u de uitvoer โhello world!โ in de programmeerconsole. Bekijk de volgende code
def main() Voorbeeld 2
def main():
print("Hello World!")
if __name__ == "__main__":
main()
print("Guru99")
GuruIn dit geval staat er 99 afgedrukt.
Hier is de uitleg,
- . Python interpreter een bronbestand leest, zal het alle daarin gevonden code uitvoeren.
- . Python voert het โbronbestandโ uit als het hoofdprogramma, het stelt de speciale variabele (__name__) in op een waarde (โ__main__โ).
- Wanneer u de hoofdfunctie in Python uitvoert, leest deze de โifโ -instructie en controleert of __name__ gelijk is aan __main__.
- In Python โif__naam__== โ__main__โ stelt u in staat om de Python bestanden ofwel als herbruikbare modules of zelfstandige programma's.
Waarom een โโmain()-functie gebruiken in Python?
Python Het verplicht je niet om een โโ`main`-functie te schrijven, maar ervaren ontwikkelaars gebruiken er wel een in bijna elk niet-triviaal script. Het `def main()`-patroon brengt orde in een bestand en maakt de code veilig herbruikbaar. Hier zijn de belangrijkste redenen om het te gebruiken:
- Duidelijk toegangspunt: Een main()-functie laat de lezer precies zien waar het programma begint, waardoor de logica gemakkelijk te volgen is.
- Herbruikbare modules: Code De voorwaarde `if __name__ == โ__main__โ` wordt alleen uitgevoerd bij directe uitvoering, zodat andere bestanden uw functies kunnen importeren zonder neveneffecten.
- Lokaal bereik: Variabelen die binnen main() worden aangemaakt, blijven lokaal, waardoor onbedoelde conflicten met globale namen elders in de module worden voorkomen.
- Eenvoudiger testen: Door de logica in main() te isoleren, kan een testsuite deze direct aanroepen en het resultaat controleren.
- Gezamenlijke conventie: Een main()-functie is een algemeen erkend signaal van het startpunt van een programma, wat de onderhoudbaarheid tussen verschillende teams verbetert.
Kortom, een main()-functie is optioneel in PythonMaar het zorgt ervoor dat grotere programma's leesbaar, testbaar en veilig te importeren blijven.
De __name__ variabele en Python Module
Om het belang van de variabele __name__ te begrijpen in Python hoofdfunctiemethode, overweeg de volgende code:
def main():
print("hello world!")
if __name__ == "__main__":
main()
print("Guru99")
print("Value in built variable name is: ",__name__)
Bedenk nu dat code als een module wordt geรฏmporteerd
import MainFunction
print("done")
Hier is de code-uitleg: Zoals C, Python gebruikt == voor vergelijking terwijl = voor toewijzing. Python interpreter gebruikt de hoofdfunctie op twee manieren
directe vlucht:
- __naam__=__hoofd__
- if statement == True, en het script in _main_zal worden uitgevoerd
importeren als module
- __name__= bestandsnaam van de module
- if statement == false, en het script in __main__ zal niet worden uitgevoerd
Wanneer de code wordt uitgevoerd, wordt gecontroleerd op de modulenaam met 'if'. Dit mechanisme zorgt ervoor dat de hoofdfunctie alleen wordt uitgevoerd als directe uitvoering en niet wanneer deze als module wordt geรฏmporteerd.
Bovenstaande voorbeelden zijn Python 3 codes, als je wilt gebruiken Python 2. Houd rekening met de volgende code
def main(): print "Hello World!" if __name__== "__main__": main() print "Guru99"
In Python 3, je hoeft if__name niet te gebruiken. De volgende code werkt ook
def main():
print("Hello World!")
main()
print("Guru99")
Let op: Zorg ervoor dat u na het definiรซren van de hoofdfunctie een beetje inspringing laat staan โโen dat u de code niet direct onder de def main(): functie declareert, anders krijgt u een inspringfout.
Hoe geef je opdrachtregelargumenten door aan de Python main() functie
Een main()-functie is de meest logische plek om invoer te verwerken die een gebruiker via de commandoregel doorgeeft. Python Deze waarden worden opgeslagen in de lijst sys.argv, die door de standaard sys-module wordt geleverd. Het eerste item, sys.argv[0], is de scriptnaam, en elke waarde daarna is een argument dat door de gebruiker wordt opgegeven.
Het volgende voorbeeld leest en print opdrachtregelargumenten vanuit een main()-functie:
import sys def main(): print("Script name:", sys.argv[0]) print("Arguments passed:", sys.argv[1:]) if __name__ == "__main__": main()
Als je het bestand opslaat als script.py en het uitvoert python script.py alpha betaHet programma print de scriptnaam en de lijst ['alpha', 'beta']. Omdat de waarden binnen main() binnenkomen, blijft de logica overzichtelijk en gemakkelijk te testen.
Hier volgen een paar praktische tips voor het werken met opdrachtregelinvoer:
- Verwijder de scriptnaam: Gebruik sys.argv[1:] om alleen de argumenten te lezen die de gebruiker heeft ingevoerd.
- Gebruik argparse voor echte tools: De ingebouwde argparse-module parseert vlaggen, opties en helptekst veel veiliger dan het handmatig lezen van sys.argv.
- Geef een exitcode terug: Wikkel de aanroep in sys.exit(main()) zodat de retourwaarde van main() de exitstatus van het proces wordt.
- Vroegtijdig valideren: Controleer het aantal en het type argumenten bovenaan de main()-functie voordat je de rest van het programma uitvoert.
Dit patroon transformeert een eenvoudig script in een betrouwbaar commandoregelprogramma, terwijl het tegelijkertijd...ping elke stap binnen รฉรฉn enkele, testbare main() functie.
Python De main()-functie versus andere programmeertalen
Ontwikkelaars afkomstig uit C, C++of Java Vaak wordt een verplichte main()-functie verwacht. Python Het werkt anders omdat het een geรฏnterpreteerde taal is, dus de interpreter voert een bestand gewoon van boven naar beneden uit. De main()-functie in Python Het is daarom eerder een conventie dan een regel.
- C, C++, C# en Java: Een main()-functie is een verplicht startpunt. De runtime roept deze automatisch aan en er kan er slechts รฉรฉn per programma zijn.
- Python: Er is geen main()-functie nodig. De uitvoering begint bij de eerste regel van het bestand en def main() wordt alleen uitgevoerd als uw code deze aanroept.
- De bewaker: Het if __name__ == โ__main__โ-blok geeft Python Een functie met een vergelijkbaar doel als een gecompileerde main()-functie, namelijk het markeren van code die alleen uitgevoerd moet worden wanneer het bestand het hoofdprogramma is.
Terwijl andere programmeertalen een main()-ingangspunt afdwingen, Python Laat de keuze aan u over en biedt dezelfde duidelijkheid door middel van conventie in plaats van een compilerregel.




