Gå til innhold

Trenger hjelp med Python - Å lære meg "def".


Anbefalte innlegg

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
Videoannonse
Annonse

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 av warpie
Lenke til kommentar

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 av warpie
Lenke til kommentar

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?

  • Liker 1
Lenke til kommentar

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

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
  • 3 uker senere...

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

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 konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...