Python-oppimateriaali (CHEM-A2600)
Erilaisia funktioita
Tässä osiossa on useita esimerkkejä erilaisista funktiosta. Esimerkkejä on parasta havainnollistaa kopioimalla koodi Spyderiin ja ajamalla se itse.
1. Funktiolla ei tarvitse välttämättä olla yhtään parametria:
def pii(): # Funktio palauttaa piin arvon 15 desimaalin tarkkuudella return 3.141592653589793 r = 1.5 pallon_tilavuus = 4 * pii() * r**3 / 3 print(round(pallon_tilavuus, 2))
2. Funktiolla voi olla useita parametreja:
def ainemaara(massa, moolimassa): return massa / moolimassa n = ainemaara(5.4, 18.02) print(round(n, 3))
3. Funktiolla ei ole pakko olla paluuarvoa (return):
def tervehdys(kieli): if kieli == "suomi": teksti = "Hei!" elif kieli == "ruotsi": teksti = "Hej!" elif kieli == "saksa": teksti = "Hallo!" else: teksti = "!!??" print(teksti) tervehdys("suomi")
4. Funktiolla voi olla useita paluuarvoja:
def tunnit_ja_minuutit(minuutit_yhteensa): tunnit = minuutit_yhteensa // 60 # katkaiseva jakolasku minuutit = minuutit_yhteensa % 60 # jakojäännös return tunnit, minuutit luku = int(input("Anna minuuttien määrä kokonaislukuna:\n")) h, m = tunnit_ja_minuutit(luku) print(luku, "minuuttia on", h, "tuntia ja", m, "minuuttia")
tulostaa:
Anna minuuttien määrä kokonaislukuna:
> 124
124 minuuttia on 2 tuntia ja 4 minuuttia
5. Funktio voi sisältää useita return-käskyjä, mutta vain yksi niistä voi toteutua:
def itseisarvo(luku):
if luku >= 0:
return luku
else:
return -luku
print(itseisarvo(5.4))
print(itseisarvo(-5.4))
6. return-lause yksinkertaistaa parametrien arvojen tarkistamista
def ratkaise_p(V, n, T):
# Ratkaistaan paine ideaalikaasun tilanyhtälön avulla
# Parametrien yksiköt: V (m^3), n (mol), T(K)
# Jos joku parametreista on epäfysikaalinen,
# funktio palauttaa välittömästi arvon -1
if V <= 0 or n <= 0 or T <= 0:
return -1
# Ylläolevan if-lauseen return-käsky hoitaa virheelliset parametrit
# Jos koodi jatkaa tänne asti, tiedämme, että parametrit ovat OK
R = 8.314462618 # J K^-1 mol^-1
p = n * R * T / V
return p # Pa
print(ratkaise_p(0.25, 1.25, 300))
7. Funktiot voivat kutsua toisiaan:
def tervehdys(kieli):
if kieli == "suomi":
teksti = "Hei!"
elif kieli == "ruotsi":
teksti = "Hej!"
elif kieli == "saksa":
teksti = "Hallo!"
else:
teksti = "!!??"
print(teksti)
def keskustelu(kieli1, kieli2):
tervehdys(kieli1)
tervehdys(kieli2)
keskustelu("ruotsi", "saksa")
tulostaa:
Hej!
Hallo!
8. Valinnaiset parametrit
Funktioilla voi olla myös valinnaisia parametreja, joille on määritelty oletusarvo. Jos funktiota kutsutaan ilman valinnaista parametria, Python käyttää oletusarvoa. Tuttu esimerkki on print-funktio, jolla on useita valinnaisia parametrejä. Yksi niistä on end-parametri, jonka oletusarvo on rivinvaihto "\n". Kaksi tavallista funktiokutsuaprint("Moi!") print("Moi!")
tulostaa
Moi!
Moi!
Kun taas vaihtamalla end-parametri tyhjäksi merkkijonoksi:
print("Moi!", end="") print("Moi!", end="")
tulostuu
Moi!Moi!
Esimerkki valinnaisten parametrien määrittelystä:
def ratkaise_tilavuus(n, T = 273.15, p = 101325):
# Ratkaisee tilavuuden ideaalikaasun tilanyhtälöstä
# Kaikki suureet SI-yksiköissä
# Parametreillä p ja T on oletusarvot (NTP-olosuhteet)
R = 8.3144598 # J K^-1 mol^-1
V = n * R * T / p
return V
# Selvennä aina funktiota kutsuessasi, minkä valinnaisen parametrin haluat antaa
V1 = ratkaise_tilavuus(0.28) # Pelkästään pakollinen parametri n
V2 = ratkaise_tilavuus(0.28, T = 400) # n ja valinnainen parametri T
V3 = ratkaise_tilavuus(0.28, T = 300, p = 200000) # n ja molemmat valinnaiset parametrit
print(round(V1, 5), round(V2, 5), round(V3, 5))
HUOM! Valinnaiset parametrit pitää aina määritellä vasta pakollisten parametrien jälkeen. Muuten Python antaa virheilmoituksen:
SyntaxError: non-default argument follows default argument