Vad innebär detta __name__ == '__main__'?
Längst ner i denna koden så står det __name__ == '__main__' och det har stått så på andra sidor också men jag hittar inte förklaringen till vad det innebär. Sen så fattar jag inte inte vad legroots eller legendre egentligen gör även om just det förklaras till vänster om denna sidan men fortfarande.
Vi hade också en uppgift där det stod så här:
- Remember to update your __init__.py file acoordingly
Igen där förekommer de där __ __ underscores igen. Vad skulle det kunna innebära? Boken heter Numerical physics in physics with Python om någon undrar förresten.

Hej!
När man kör programmet så är det main funktion som gäller. Man testar om vi är ju i main funktion och så kör vi andra funktioner.
Om vi hade inte de sista två linjer, det inget skulle hända men vi kan ändå kalla legroots.
Att testa om vi är i main hjälper när man importerar skriptet i någon annan fil, då ska man inte oroa sig att legroots kallas onödigt eller inte med flit. För __name__ har __main__ som värde bara när skriptet körs direkt.
Hoppas att det hjälper.
Om du importerar script 1 in i script 2 kommer script 1 exekveras direkt om du inte har den boilerplate-koden i slutet. Om du kör ditt script från exempelvis kommandotolken är det därifrån den kommer börja exekvera scriptet.
Vad står det i boken när de använder __main__ första gången?
Vad legendre gör vet jag inte, men det är något rent matematiskt. Är det något med den som du behöver få förklarat så fråga gärna i en annan tråd.
Legendre var en matematiker. De andra funktionerna som börjar på "leg" har väl fått den delen av namnet därifrån.
logicbloke skrev:Hej!
När man kör programmet så är det main funktion som gäller. Man testar om vi är ju i main funktion och så kör vi andra funktioner.
Om vi hade inte de sista två linjer, det inget skulle hända men vi kan ändå kalla legroots.
Att testa om vi är i main hjälper när man importerar skriptet i någon annan fil, då ska man inte oroa sig att legroots kallas onödigt eller inte med flit. För __name__ har __main__ som värde bara när skriptet körs direkt.
Hoppas att det hjälper.
Menar du då att man sparar dataresurser i och med att det inte körs gång på gång igen (speciellt i detta fall då det kan leda till att vi får fram samma rot (x=0))? Aja men det kanske är det som är svaret på frågan
Ingenting händer annars
Men det fattar jag inte för jag har kunnat (I JupyterLabs som vi använder) typ ibland bara kunnat kopiera koden och så funkar det ändå. Så det kanske handlar mer om importering då. Vänta är det det vi gör? Genom att skriva de sista raderna så får vi reda på om vi är i main funktionen eller inte?
Sen kring vad naytte sade så förstod jag i princip inget. Boilerplate kod, vad är det? Aja oavsett så är min fråga vad händer om det exekveras direkt förresten? Vad är kommandotolken också?
Gällande vad Laguna sade så hittade jag faktiskt informationen i ett litet snippit.
Also checks to see if we're running the present file as the main program... asså jag vet inte varför... förstår ändå inte


Menar du då att man sparar dataresurser i och med att det inte körs gång på gång igen (speciellt i detta fall då det kan leda till att vi får fram samma rot (x=0))? Aja men det kanske är det som är svaret på frågan
Det är mest att man vill inte att koden körs utan att man ska vilja det. Det verkar inte att du importerar skriptet i något annat skript, så det kvittar ju.
Så det kanske handlar mer om importering då. Vänta är det det vi gör? Genom att skriva de sista raderna så får vi reda på om vi är i main funktionen eller inte?
Precis. Du använder inte importering här (skriptet importeras någon annanstans) så det spelar egentligen ingen roll.
Importering som händer här är tvärtom. Du importerar andra moduler på början och det är inte samma sak. De som skrev legendre såg till att ingen kod körs bara för att du vill importerar deras module och använda deras funktioner.
Hoppas du har en tydligare bild nu.