Ohjelmointikielissä funktio suorittaa aina jonkin tehtävän tai tehtäviä. Funktiolle annetaan aina yksilöllinen nimi (ei ääkkösiä jne.), jolla sitä kutsutaan aina tarvittaessa. Funktiota ei siis suoriteta aina, vaan vasta kutsuttaessa.
Sivu voi kutsua samaa funktiota useita kertoja, funktion sisältä voidaan kutsua toisia funktioita. Funktio voi saada alkuarvoja parametrina ja se voi myös palauttaa arvoja.
Pythonissa funktio määritellään def-sanalla. Tämän sanan jälkeen kirjoitetaan funktion nimi ja merkit (): heti nimen perään.
Funktion käskyt kirjoitetaan sisennettynä nimi-rivin alle. Sisennys tehdään tab-napilla.
def kirjoita():
print("Kirjoitetaan jotain!")
Funktiota kutsutaan sen nimellä:
kirjoita()
def kirjoita(): #funktio alkaa
print("Kirjoitetaan jotain!") #funktiossa yksi käsky sisennettynä
kirjoita() #kutsutaan funktiota
Kokeile:
Kirjoita yllä olevaan funktioon useampi käsky allekkain.
Joskus tarvitsemme muuttaa muuttujaa, mikä on sijoitettu funktion ulkopuolelle. Tällöin muuttuja täytyy esitellä funktion sisällä rivillä:
global muuttujanNimi
Esimerkiksi:
minunTeksti = "Funktio kirjoittaa"; #funktion ulkopuolinen muuttuja
def kirjoita():
global minunTeksti #haetaan muuttuja käyttöön
minunTeksti = minunTeksti + " jotain!" #muutetaan muuttujaa
print(minunTeksti) #tulostetaan muuttunut arvo
kirjoita()
print(minunTeksti) #muuttuja on muuttunut funktiossa
Kokeile:
Muuta yllä olevaa funktiota siten, että muuttuja minunTeksti ei muutu funktion sisällä ja
funktio tulostaa kuitenkin saman tekstin.
Ohjelman kirjoittajan pitää pitää huoli, että tehtävä jaotellaan järkevästi osiin eli pienempiin tehtäviin. Jos ohjelma ei ole kirjoitettu "hyvin", on se sekava ja siinä on paljon turhaa koodia.
Jos ohjelmalla on toistuvia pieniä tehtäviä, ne on aina hyvä jaotella funktioiksi.
Tehdään ohjelma, mikä tulostaa kahden kokonaisluvun keskiarvon:
luku = 0 #luvun alkuarvo
def kysyLuku():
global luku
uusiluku = input("Anna kokonaisluku:") #funktio kysyy uutta lukua
luku = luku + int(uusiluku) #ja lisää sen vanhaan
def tulostaKeskiarvo():
global luku
kysyLuku()
kysyLuku()
keskiarvo = luku / 2
print("Kahden luvun keskiarvo on " + str(keskiarvo))
tulostaKeskiarvo()
Muuta edellinen ohjelma siten, että se toimii desimaaliluvuilla ja antaa vastauksen kolmen desimaalin tarkkuudella.
Suorita tehtävät Editorilla ja tallenna työsi Tiedostona.
Tee ohjelma, mikä kysyy käyttäjän nimeä ja ikää. Sen jälkeen ohjelma tulostaa tervehdyksen: "Hei, xxxx ! Ikäsi on yyyy".
Toteuta ohjelman kysymykset ja tulostukset erillisillä funktioilla.
Suorita tehtävät Editorilla ja tallenna työsi Tiedostona.