Welkom terug.
Om ons begrip van modules af te ronden, moeten we het hebben over een belangrijk concept,
namelijk dit idee van main.
Of specifiek underscore, underscore, main.
Want als je je in je carrière begint te ontwikkelen, zul je veel van dit soort code gaan zien.
Dit is een van de meest voorkomende regels die je zult zien als je met Python werkt.
En in deze video wil ik uitleggen wat het doet.
Omdat het een van de meest verwarrende onderwerpen is, vooral voor beginners.
Dus voor nu ga ik commentaar geven en een paar dingen doen.
We hebben hier ons belangrijkste DCPI-bestand.
En ik wil eerst een paar dingen doen, ik ga onze winkelwagen openen, die hier is.
En bovenaan hier, ik ga gewoon afdrukken, want op dit moment doet ons bestand niets.
Ik ga zeggen afdrukken, onderstrepingsteken, onderstrepingsteken, naam zo.
En ik ga hetzelfde doen voor de utility dogpile.
Dus bovenaan het hulpprogramma DCPI.
Nu, als ik main hier uitvoer, laten we dan hier op run klikken.
Ik laat deze twee dingen afdrukken.
Nu, waarom is dat?
Nou, als ik een python-bestand uitvoer.
Gewoonlijk voeren we slechts één bestand uit, juist, het hoofdbestand waar we in ons geval aan werken,
ons hoofdbestand heet toevallig Main DCPI.
Dus als ik op uitvoeren klik, gaat de interpreter hier regel voor regel doorheen.
Het eerste dat het doet, is de hulpprogramma-module importeren.
En machtigen deze twee bestanden.
Dus wat het gaat doen is naar het hulpprogramma-bestand gaan en dit uitvoeren en automatisch elk bestand dat we uitvoeren of
elke module.
Krijgt een naam wanneer ons geval de naam is van het modelhulpprogramma, dus als je iets in Python importeert, vindt het
de module en voert het een code uit.
Dus het voegt deze code toe aan het geheugen omdat we vermenigvuldigen, delen van emacs moeten gebruiken en dan naar de volgende
regel gaan.
In ons geval is het deze waar we opnieuw importeren vanuit de winkelwagen.
Dus het gaat zeggen, hey, de naam hiervan is shopping dot, more shopping dot shopping cart, want dat is de naam
van de module.
En dan, ten slotte, zal het hier doorgaan, want nu zijn deze bestanden punt voor regel doorlopen en staan
ze nu in het geheugen.
Nu heeft de tolk toegang tot delen, vermenigvuldigen en al deze functies die we hebben geïmporteerd.
Nu, hier is mijn vraag, wat als ik hier of aan het einde een onderstrepingsteken, een onderstrepingstekennaam op dit hoofdbestand
print als ik hier ren?
Je ziet dat ik underscore, underscore, main krijg.
Is dat wat je verwachtte?
Wat als ik de naam van dit bestand heb gewijzigd, laten we zeggen refactor?
En zeg hernoemen.
Ja, dat is OK, we willen het hernoemen en we zullen het hernoemen naar, laten we zeggen, Test DCPI.
Dit heet nu dus testen.
Wat denk je dat de onderstrepingsnaam hiervan is als ik hierheen ren?
Ik krijg nog steeds underscore, underscore, main.
Dus misschien begint dit nu logisch te worden als je de code ziet, dit als onderstrepingsteken, onderstrepingstekennaam,
het gaat naar onderstrepingsteken, onderstrepingsteken, hoofdonderstrepingsteken.
Dit zijn dus Dunda's.
Doe dan iets.
En dit, de naam main, wordt specifiek gegeven aan het bestand dat we uitvoeren, want onthoud wanneer we een fout hebben gemaakt wanneer ik speel
of wanneer ik in mijn terminal Python drie doe en dan zeg test Stoppie, ik voer dat ene bestand uit en
dat ene één bestand importeert verschillende modules en voert ze uit.
Dat ene bestand dat we uitvoeren krijgt deze standaard.
Underscore, underscore kan.
Dus de reden dat je dit soort regels in Python zou kunnen zien, is dat we er soms zeker
van willen zijn dat we een module alleen uitvoeren als dit de module of de hoofdmodule is.
Dus ik kan zeggen, hier, print, voer dit uit.
En laten we deze afdruk voor nu verwijderen en op uitvoeren klikken.
Je ziet dat ik dit krijg, voer dit alsjeblieft uit, maar als ik deze code kopieer en laten we zeggen, zet het in het hulpprogramma.
Zoals dit en ik klik, uitvoeren, je ziet dat, alsjeblieft, dit verschijnt niet in het hulpprogramma pas aan het
einde als we deze test uitvoeren.
Omdat waarom?
Nou, de naam van dit bestand ben ik niet, de naam, onthoud, is nut.
Dit is dus een goede manier voor ons om alleen de code van het hoofdbestand uit te voeren.
Dit is dus een veel voorkomende structuur naarmate projecten groter en groter worden, misschien hebben we code die we niet
willen uitvoeren, tenzij het het hoofdbestand is.
Laten we in ons geval zeggen dat we geen van deze willen uitvoeren.
Tenzij dit het hoofdbestand is dat wordt aangeroepen. Als ik dit nu uitvoer, zie je dat en ik krijg een foutmelding, er staat dat
regel één in module de naam vermenigvuldigen niet kan importeren vanuit het hulpprogramma omdat, nou ja, we kunnen dit niet importeren omdat we dat niet hebben
gedaan t voer dit stuk code uit.
Laten we dat dus terugdraaien.
Kom hier terug en wat we nu kunnen doen is dit hele ding inpakken.
Op deze manier, zodat we ervoor zorgen dat de test alleen wordt uitgevoerd als hij goed is, dat alleen als dit degene is die wordt uitgevoerd, deze niet moet
worden geïmporteerd, maar dat het gewoon het hoofdbestand moet zijn dat we uitvoeren.
Onthoud nu dat we een klas hadden, laten we zeggen dat we een hoofdbestand hadden en we maakten een klas, laten we zeggen
leerling.
En deze student, laten we zeggen, heeft niets, maar als we het type student hebben.
En we printen hier.
En ik klik op uitvoeren.
OK, laten we de studenten instantiëren, dus laten we zeggen dat student één gelijk is aan student.
En laten we gewoon het type student nemen, als ik klik, rennen.
Weet je nog hoe we deze underscore, underscore, gemiddelde punt student hebben?
Wat het zegt is dat deze klasse is gemaakt.
In het hoofdbestand dat we hebben uitgevoerd, als ik dit bijvoorbeeld kopieer, heb ik het op deze manier aan het hulpprogramma toegevoegd.
En nu in mijn hoofdbestand.
Ik importeer hulpprogramma.
En laten we zeggen nutspunt.
Stap één en doen.
En dan printen.
Wat zal er dan gebeuren?
Welnu, we krijgen klasse utility dot student.
Dus telkens als we die Maine zagen, zei het alleen maar, hey, dit was een klasse die in het Maine-bestand
was gemaakt.
Nogmaals, dit is een van die dingen die je veel gaat zien.
Maar aan het eind van de dag betekent het alleen maar dat ik er zeker van wil zijn dat als
dit het bestand is dat wordt uitgevoerd, omdat een bestand kan worden uitgevoerd of geïmporteerd, als dit het bestand is dat
wordt uitgevoerd, de hoofdbestand, doe dan iets.
Het is dus een goede manier om te controleren hoe onze modules worden gebruikt, of ze nu geïmporteerd of uitgevoerd worden.
Hopelijk was dat logisch in de volgende video, we gaan het hebben over iets spannends dat ingebouwde modules wordt
genoemd.
Ik zie je bij die ene.
Tot ziens.