Skip to content

Funktiot

Funktio

Funktio niputtaa joukon lauseita yhdeksi kokonaisuudeksi, jota voidaan kutsua nimeltä aina tarvittaessa. Ohjelman jaetaan usein pienempiin osiin, joita kutsutaan Pythonissa funktioiksi. Muissa ohjelmointikielissä niitä voidaan kutsua aliohjelmiksi, proseduureiksi tai metodeiksi. Funktio täytyy esitellä ennen kuin sitä käytetään.

Esimerkki funktiosta

Alla olevassa esimerkissä pääohjelma (main) kutsuu funktiota laskeALV. (ALV on lyhenne sanoista arvonlisävero).

def laskeALV(hinta):
    #Funktio laskee arvonlisäveron annetulle hinnalle ja palauttaa alvin
    return 0.24 * hinta

#ohjelma jossa edellä määriteltyä funktiota kutsutaan
luku = 50 
#kutsutaan Funktioa laskeALV ja välitetään funktiolle parametrina
alv = laskeALV(luku)
print("Arvonlisävero on", alv)

Funktion paluuarvo

Funktiot voivat palauttaa suorituksen jälkeen kutsuvalla ohjelmalle paluuarvon. Paluuarvo voi olla: * jokin perustietotyyppi, siis esim bool, int, float, str * kokoelmia, olioita yms (ei käsitellä tällä kurssilla). Palautettava arvo (luku, merkkijono tai muu) palautetaan return-määreellä.

def laskeALV(nettohinta):
    #alv on 24% verottomasta hinnasta
    return (0.24 * nettohinta)
Funktio voi olla myös palauttamatta mitään. Se vain suorittaa sille ohjelmoidut tehtävät ja se on siinä. Seuraavassa esimerkissä funktiolle välitetään kaksi tietoa, käyttäjän nimi parametrilla name ja kieli parametrilla language. Funktio tervehtii käyttäjää joko suomeksi tai englanniksi.
def say_hello(name, language):
    if language == "fi":
      print("Terve", name)
    else:
      print("Hello", name)

Funktion parametrit

Funktioille voidaan välittää parametreja. Parametreja voi yksi tai useampia. Parametrien avulla funktiolle välitetään tietoa parametrien arvoilla. Parametreina voi käyttää kaikki tietotyyppejä, olioita, kokoelmia jne. Edellä olevalle laskeALV-funktiolla on yksi parametri ja sitä kutsuttaessa sille välitetään yksi argumentti.

Alla olevassa esimerkissä on funktio toistaNimi, jolla on kaksi parametria, ensimmäinen int-tyyppinen ja toinen string-tyyppinen

def toistaNimi(lkm, nimi):
  for x in range(lkm):
    print(nimi)

#kutsutaan funktiota ja välitetään sille argumenttina käyttäjän antama nimi
nimi = input("Ole hyvä, anna etunimesi")
toistaNimi(5, nimi)
Funktio