Aliohjelmat ja funktiot Pythonissa
Funktio kokoaa yhden tehtävän nimetyksi kokonaisuudeksi. Määrittelyssä olevat nimet ovat parametreja; kutsussa annetut arvot ovat argumentteja.
Määrittely ja kutsu
def määrittelee funktion, mutta ei suorita sen runkoa. Kutsu käynnistää funktion. Ilman return-lausetta tai pelkällä return-lauseella paluuarvo on None.
def tervehdi():
print("Hei!")
tervehdi()Tulostus (ilman syötteiden kysymystekstejä):
Hei!
Parametri välittää tiedon
Parametriin viitataan funktion sisällä. Funktio ei tarvitse input-kutsua, jos kutsuja välittää tiedon. Tämä helpottaa testaamista eri arvoilla.
def tervehdi(nimi):
print(f"Hei, {nimi}!")
tervehdi("Aino")
tervehdi("Mikko")Tulostus (ilman syötteiden kysymystekstejä):
Hei, Aino! Hei, Mikko!
return ja print ovat eri asioita
return antaa arvon kutsujalle ja päättää kyseisen funktiokutsun. print näyttää tekstin mutta ei palauta tulostettua arvoa. Pidä laskenta ja tulostus erillään, jos haluat käyttää tulosta myöhemmin.
def summa(a, b):
return a + b
tulos = summa(2, 5)
print(tulos)
print(summa(-3, 1))Tulostus (ilman syötteiden kysymystekstejä):
7 -2
def nayta():
print("Hei")
tulos = nayta()
print(tulos)Tulostus (ilman syötteiden kysymystekstejä):
Hei None
Paikalliset nimet ja pääohjelma
Funktion paikalliset nimet eivät yleensä näy ulkopuolelle. __name__ on moduulin nimen sisältävä muuttuja, ei funktio. Suoraan ajettavassa ohjelmassa sen arvo on "__main__". Ehto if __name__ == "__main__" rajaa kutsut suoraan suoritukseen; kurssin pienissä ohjelmissa sitä ei ole pakko käyttää.
def summa(a, b):
return a + b
if __name__ == "__main__":
print(summa(4, 6))Tulostus (ilman syötteiden kysymystekstejä):
10
Kokeile itse
Mitä tapahtuu, jos vaihdat summa-funktion return a + b -rivin muotoon print(a + b)?
Vastaus ja perustelu
Funktio tulostaa summan mutta palauttaa None. Tulosmuuttujaan ei enää tule laskettua lukua.
Suorita koodiesimerkit yksi kerrallaan. Jokainen esimerkki sisältää tarvitsemansa määrittelyt. Vertaa omaa ennustettasi tulosteeseen ennen seuraavaan aiheeseen siirtymistä.