Funktion perusteita käsitellessäni kerroin miten funktoita voi toiminnan perusteella erotella toisistaan.
Tässä vielä yksi tapa lähestyä ja erotella funktioita toinen toisistaan.

Ensiksi sellaisia,
jotka eivät palauta mitään (eivät sisällä return-lausetta).
Joissakin oppikirjoissa näitä sanotaan aliohjelmiksi.
Aliohjelma siis tekee jotain (tulostaa jotain näyttöön, laskee lukuja yhteen, jne.),
mutta ei palauta mitään arvoa.
Edellä olevissa esimerkeissä funktiot eivät palauttaneet mitään arvoa.
Eihän niissä ollut koko return-lausetta.

Toiseksi sellaisia,
jotka palauttavat jonkin arvon (numero, merkkijono,…).
Tuo palautettava arvo on funktiota ajettaessa talletettava muuttujaan.
Jos return-lause ei palauta arvoa, se palauttaa None-datatyypin.

Funktion return-lauseella palauttama arvo
Funktiota tarvitaan tekemään jokin erillinen työ jota tarvitaan useasti samanlaisena,
vaikkapa tiedon lukeminen anturilta.
Tuon toimenpiteen tuloksena syntyy yleensä jokin tulos, arvo, joka palautetaan kutsujalle.
Se tapahtuu avainsanalla return.

Arvon palauttaminen tarkoittaa sitä,
että funktion koodissa määritetään palautettavan muuttujan arvo ja
annetaan se return-lauseen mukaan kun palataan funktion kutsuneeseen lauseeseen.
Kun funktion suoritus on loppu, palataan takaisin siihen kohtaan ohjelmassa, missä funktiota kutsuttiin.

Palautettava arvo otetaan talteen muuttujaan sijoituskäskyn avulla.
Joskus riittää pelkkä tulostus print-funktiolla.
Funktiossa voi olla useita return-käskyjä, mutta niistä kuitenkin valitaan vain yksi.
Valinta riippuu ohjelmakoodista, minkä jälkeen funktiosta poistutaan välittömästi.

Olemme jo käyttäneet järjestelmän sisään rakennettua input()-funktiota,
sehän palauttaa siihen näppäimistöltä syötetyn arvon.

Return None

Mallikoodin funki-funktiossa oleva pass-lauseke kertoo, että funktion lohko on tyhjä, eli se ei tee mitään.
Siksi se ei myöskään palauta mitään arvoa.
Kun se ei voi palauttaa arvoa, se kuitenkin palauttaa datatyypin None, joka Shellissä näkyy.
None merkitsee tyhjää.

 

Return palauttaa arvon

Huomaa 1. funktion sisennys. Kaikki koodirivit jotka kuuluvat funktioon, on sisennetty.
Huomaa 2. funktio esitellään ennen pääohjelmaa.
Huomaa 3. funktion paluuarvo on sijoitettu muuttujaan.
Huomaa 4. \n tekee tyhjän rivin.

 

Funktio palauttaa arvon toiselle funktiolle

Mallikoodin kommentit kertovat kaiken olennaisen.
Tutki rivi riviltä miten ohjelma etenee alusta loppuun.

 

Idea
Kun on tarvetta siirtää tietoa funktioiden välillä käytetään parametreja ja return-paluuarvoa.

Funktion parametrit
Parametri on tapa välittää funktiota kutsuvalta ohjelman osalta tietoa, dataa, kutsuttavalle funktiolle.
Parametrit käyttäytyvät funktion sisällä aivan kuin ne olisivat normaaleja muuttujia, mutta sillä erolla,
että niille annetaan arvot funktiokutsussa eikä funktion sisällä.
Parametrit ovat muuttujia, jotka määritellään (annetaan nimi) funktion nimirivillä funktion nimen jälkeen olevien sulkujen sisällä.
Jos halutaan antaa useampia parametreja, tulee ne erotella toisistaan pilkuilla.
Funktiolla voi olla nolla, yksi tai useita parametreja.
Parametrit käsitellään funktiossa ja työn tulos voidaan palauttaa kutsujalle return-lauseessa.

Funktiokutsu ja parametrien välitys
Funktion parametreille annetaan arvot kutsuvaiheessa.
Kutsussa olevat arvot annetaan parametrien arvoiksi samassa järjestyksessä kuin ne on
funktion määrittelyn otsikossa ja funktion kutsussa lueteltu.
Määrittelyn otsikossa ensimmäisenä oleva parametri saa arvokseen kutsussa ensimmäisenä luetellun parametrin,
toinen toisen ja niin edelleen.

Joskus aiheuttaa sekaannusta se, että funktiokutsun arvoja sanotaan parametreiksi,
mutta itse funktiossa niitä sanotaan funktion argumenteiksi.
Selvyyden vuoksi puhumme jatkossa pelkästään parametreista.
Parametrit käyttäytyvät funktion sisällä aivan kuin ne olisivat normaaleja muuttujia.
Parametrit ovat paikallisia muuttujia ja siis olemassa vain funktion ajon aikana.
Parasta parametreissa on se, että funktiota voi kutsua ohjelmasta useita kertoja ja käyttää tarvittaessa aina eri parametria.

 

Parametri ja return

 

Kutsutaan samaa funktiota eri parametreilla

Analyysi:
Vertaile tulostusta ja koodia rivi kerrallaan, niin selviää mitä ohjelmassa tapahtuu.

Tärkeää havaita:
Sama funktio, eri parametrien arvoilla se saa eri tuloksen.
Kummatkin tulokset palautetaan pääohjelmaan ja tulostetaan.
Funktiota voi kutsua ohjelmasta useita kertoja eri parametreilla.
Pääohjelmassa (siis funktion ulkopuolella) määritetty muuttuja saa paluuarvona
eri arvot koska kutsuissa parametrit olivat eri.

 

Kolme return-lausetta ja parametri

Analyysi:
suurempi-funktio selvittää kumpi parametreina kutsussa saaduista numeroista on suurempi.
Se tehdään if-elif-else testillä.
Return-lauseita on kolme, joista valitaan sen mukaan mikä on testin tulos.
Huomaa, että funktion viimeinen print-lause ei tulostu koska funktiosta hypätään ulos return-lauseella ennen sitä.
Se on siis turha.

 

Funktio ja if-else-valinta-rakenne

Analyysi:
Funktion kutsussa kopioidaan kutsuparametrit funktion parametreiksi.
Huomaa, että niillä voi olla eri nimet, arvot kopioidaan.
If-else-valinta selvittää kumpi parametreista on suurempi ja palauttaa sen return-lauseella kutsujalle muuttujan suurempi arvoksi.
Kokeile mitä tapahtuu kun käytät funktiossa pelkkää return-käskyä (ilman arvoa).

 

Paluu pääsivulle:

 

© 2024 Tekijät ja Käsityö verkossa Ry

Punomo.fi:n opetus- ja kaupalliseen käyttöön vaaditaan lisenssi. Lue lisää!