Grøgger Skrevet 20. desember 2011 Del Skrevet 20. desember 2011 Heisann sveisann folkens! (litt teit kanskje?) Oppretter dette emnet fordi jeg trenger hjelp til å forstå funksjonen "def" i Python 3. Har kommet til "Defining Functions" delen av den offisielle tutorialen. Klarer bare ikke å få noen mening ut av denne setningen: "Next comes a '(' followed by the parameter n (n is passed from the program into the function when the function is called)." Hva er et parameter, og hvordan kan vi f.eks gjøre slik med det: a_var = 10 b_var = 15 e_var = 25 def a_func(a_var): print("in a_func a_var = ", a_var) b_var = 100 + a_var d_var = 2 * a_var print("in a_func b_var = ", b_var) print("in a_func d_var = ", d_var) print("in a_func e_var = ", e_var) return b_var + 10 c_var = a_func(b_var) print("a_var = ", a_var) print("b_var = ", b_var) print("c_var = ", c_var) print("d_var = ", d_var) Han bytter ut a_var med b_var i a_func funksjonen, det er dette jeg ikke forstår. Hadde jeg bare visst betydningen av parameter i denne sammenhengen! Blir gal! Takker kjempemye for alle svar! MvH Andreas Lenke til kommentar
slacky Skrevet 20. desember 2011 Del Skrevet 20. desember 2011 (endret) c_var = a_func(b_var) Legg merke til tøde teksten, dette er hvorfor a_var, ble b_var. Kalder til fuksjonen a_func, med en verdi, satt i parantes. Verdien er b_var (15). Fuksjonen krever at det leveres en verdi, def a_func(a_var) - Han har valgt å kalde den a_var, for å overstyre den orginale a_var, for å vise hvordan det fungerer. Du kan gå frem enkelt får å forstå hva jeg skriver. Endre linjen hvor det står: c_var = a_func(b_var) Med: c_var = a_func(622) - Da blir ikke a_var lik b_var (gjelder bare innen for fuksjones/def's område). --------- Endrer du en annen linje også så blir det kansje enda mer forståelig: def a_func(a_var) Med: def a_func(someint) Så vil du kjapt se at a_var bare ble overskrevet (av a_var, som ble satt i def()), og den er tilbake til seg selv. Endret 20. desember 2011 av warpie Lenke til kommentar
slacky Skrevet 20. desember 2011 Del Skrevet 20. desember 2011 (endret) Enkel bruk av def: def func(something1, something2): data = something1 + something2 return(data) pft = 12 pft2 = 163 var = func(pft, pft2) print(var) #dette vil returnere pft+pft2 (altså 12+163) Min versjon av ditt eksempel blir da slik: something1 = 723523 #denne har altså ingen betyding innefor "def func()" def func(something1, something2): data = something1 + something2 return(data) pft = 12 pft2 = 163 var = func(pft, pft2) print(var) #Men her har den en betyding print(something1) Endret 20. desember 2011 av warpie Lenke til kommentar
torbjørn marø Skrevet 20. desember 2011 Del Skrevet 20. desember 2011 Jeg vil også forsøke meg på en forklaring... Les dette tre ganger: Når en funksjon kjøres så får det sitt eget scope. Et scope er som en sekk med variabler. Når funksjonen støter på en variabel i en av instruksjonene sine - f.eks. a_var - så ser den først i sin egen sekk (sitt scope) om det finnes noen variabler der som heter det. Hvis det gjør det så brukes den. Hvis ikke så ser den i "sekken utenfor", som også inneholder variabler. a_var utenfor funksjonen og a_var inne i funksjonen er altså ikke samme variabel - de befinner seg i ulike scopes. Gir det mening? 1 Lenke til kommentar
Grøgger Skrevet 21. desember 2011 Forfatter Del Skrevet 21. desember 2011 Tror faktisk det gir mening nå. Skal prøve meg fram og si ifra hvis jeg trenger mer hjelp. Tusen takk! Lenke til kommentar
Grøgger Skrevet 21. desember 2011 Forfatter Del Skrevet 21. desember 2011 Kjapt spørsmål: Er det lurt å ha mange space for å gjøre det oversiktelig. Ser at jeg har en liten uvane (hvis man kan kalle det vane da jeg bare har holdt på i 2 dager) med å ikke ta space. Hva gjør proffene? Går kanskje raskere å ikke trykke space hele tiden også, ikke vet jeg. Lenke til kommentar
snippsat Skrevet 21. desember 2011 Del Skrevet 21. desember 2011 Er det lurt å ha mange space for å gjøre det oversiktelig. Ser at jeg har en liten uvane (hvis man kan kalle det vane da jeg bare har holdt på i 2 dager) med å ikke ta space. Hva gjør proffene? Følg PEP-8 Use 4 spaces per indentation level. Lenke til kommentar
Martin HaTh Skrevet 21. desember 2011 Del Skrevet 21. desember 2011 Protip: Last ned Notepad++, og sett tab til 4 spaces. Du trykker en enkelt gang på tab, og du får 4 mellomrom. Hendig! Det er også støtte for highlighting (dvs. enkelte ord etc. får en farge, slik at de er lette å skille ut). Og, hvis du lærer Python kan du også ta en titt på gratisbøkene (i .pdf) "A Byte of Python". Leste selv gjennom den, og synes den var veldig bra. Eventuelt, hvis du er mer videotypen, kan du se på Googles "pyquick"(ligger på youtube), som er videoopptak av et pythonkurs. Vet ikke helt hvordan det er for de som aldri har programmert før, mistenker at den kan være litt kjapp. Uansett, lykke til. Lenke til kommentar
Yumekui Skrevet 22. desember 2011 Del Skrevet 22. desember 2011 #Python på irc.freenode.net er grei den òg. Folka der kan være litt smågretne til tider, men for det meste en grei hjelp. Lenke til kommentar
HerrIlevik Skrevet 11. januar 2012 Del Skrevet 11. januar 2012 Jeg vil også forsøke meg på en forklaring... Les dette tre ganger: Når en funksjon kjøres så får det sitt eget scope. Et scope er som en sekk med variabler. Når funksjonen støter på en variabel i en av instruksjonene sine - f.eks. a_var - så ser den først i sin egen sekk (sitt scope) om det finnes noen variabler der som heter det. Hvis det gjør det så brukes den. Hvis ikke så ser den i "sekken utenfor", som også inneholder variabler. a_var utenfor funksjonen og a_var inne i funksjonen er altså ikke samme variabel - de befinner seg i ulike scopes. Gir det mening? Takk for bra forklaring! Det ga mye mening. Finnes det noe godt norsk ord for scope? Lenke til kommentar
Yumekui Skrevet 11. januar 2012 Del Skrevet 11. januar 2012 Takk for bra forklaring! Det ga mye mening. Finnes det noe godt norsk ord for scope? erklæringsfelt, definisjonsområde, gyldighetsområde, spillerom, handlingsrom Lenke til kommentar
Gng Skrevet 18. januar 2012 Del Skrevet 18. januar 2012 (endret) http://heim.ifi.uio.no/~inf1100/undervisningsplan.html (INF1100 UiO) http://www.uio.no/studier/emner/matnat/ifi/INF3331/h10/forelesningsoversikt.html (INF3331 UiO) Begge ganske kurante for å lære seg python. Endret 18. januar 2012 av Gng Lenke til kommentar
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå