...
Polymorfismi
...
tarkoittaa,
...
että
...
sama
...
toiminto
...
toimii
...
useille
...
erilaisille
...
tyypeille.
...
Tämä
...
toteutuu
...
Pythonissa
...
helposti,
...
koska
...
kieli
...
on
...
dynaaminen.
...
Staattisessa
...
kielessä
...
joutuisi
...
tekemään
...
erityyppisille
...
tyypeille
...
eri
...
funktiot
...
käytännössä
...
saman
...
asian
...
tekemiseksi.
Esimerkiksi tässä on funktio Swap, joka ottaa parametreiksi kaksi muuttujaa ja vaihtaa niiden arvot.
Code Block |
---|
Esimerkiksi tässä on funktio Swap, joka ottaa parametreiksi kaksi muuttujaa ja vaihtaa niiden arvot. {code} def Swap(a, b): return b, a input("Paina Enter näppäintä lopettaaksesi...") {code} |
Funktio
...
toimii
...
kaikille
...
muuttuja
...
tyypeille
...
-
...
itse
...
asiassa
...
toimii,
...
vaikka
...
parametrit
...
a
...
ja
...
b
...
olisivat
...
eri
...
tyyppiä,
...
koska
...
muuttujat
...
vain
...
palautetaan
...
paluuarvossa
...
ja
...
sijoitetaan
...
muuttujiin
...
eri
...
järjestyksessä.
...
Sen
...
sijaan
...
tehtäessä
...
tiettyjä
...
operaatioita
...
parametreille
...
niin
...
virheitä
...
saattaa
...
tulla,
...
jos
...
annetun
...
parametrin
...
tyyppi
...
ei
...
ole
...
yhteensopiva
...
operaation
...
kanssa.
...
Tässä
...
toinen
...
funktio
...
Multi,
...
joka
...
käyttää
...
kertolasku
...
operaattoria
...
saamilleen
...
parametreille
...
ja
...
palauttaa
...
tuloksen.
Code Block |
---|
} def Add(a, b): return a + b input("Paina Enter näppäintä lopettaaksesi...") {code} |
Tämä
...
funktio
...
toimii
...
vain
...
esimerkiksi
...
kahdelle
...
numeeriselle
...
muuttujalle
...
tai,
...
kun
...
a
...
on
...
lista,
...
monikko
...
tai
...
merkkijono
...
ja
...
b
...
numero.
...
Operaattorien
...
lisäksi
...
sama
...
pätee
...
metodien
...
käyttämiselle.
Mahdolliset virheet synyvät vasta ohjelmaa ajettaessa syötettäessä väärän tyyppisiä muuttujia johtuen Pythonin dynaamisuudesta. Staattisissa käännettävissä kielissä (kuten C) virhe tulisi käännösvaiheessa. IDLE-ympäristössä ennen ohjelman varsinaista ajamista virheitä voi tulla vain kielen syntaksissa olevista virheistä kuten sisennyksistä.
Normaalisti riittää dokumentoida funktion käyttö tapa niin että on selvää, minkä tyypin muuttujia funktiolle tulisi syöttää parametreiksi. Tämä onnistuu hyvin dokumentaatio merkkijonoilla.
Jos on tarvettaa mukauttaa funktion toimintaa annettujen muuttuja tyyppien mukaan, niin tätä varten Pythonissa on sisäänrakennettuja funktioita muuttujien tyypin tarkastamista varten. Funktio isinstance ottaa kaksi parametriä, joista ensimmäinen on mikä tahansa muuttuja ja toinen muuttujan tyypin tai luokan tunniste tai useamman sisältävä monikko; paluuarvo kertoo onko muuttuja jokin määritellyistä tyypeistä. Tässä esimerkki edellämainitun funktion käytöstä.
Code Block |
---|
Mahdolliset virheet synyvät vasta ohjelmaa ajettaessa syötettäessä väärän tyyppisiä muuttujia johtuen Pythonin dynaamisuudesta. Staattisissa käännettävissä kielissä (kuten C) virhe tulisi käännösvaiheessa. IDLE-ympäristössä ennen ohjelman varsinaista ajamista virheitä voi tulla vain kielen syntaksissa olevista virheistä kuten sisennyksistä. Normaalisti riittää dokumentoida funktion käyttö tapa niin että on selvää, minkä tyypin muuttujia funktiolle tulisi syöttää parametreiksi. Tämä onnistuu hyvin dokumentaatio merkkijonoilla. Jos on tarvettaa mukauttaa funktion toimintaa annettujen muuttuja tyyppien mukaan, niin tätä varten Pythonissa on sisäänrakennettuja funktioita muuttujien tyypin tarkastamista varten. Funktio isinstance ottaa kaksi parametriä, joista ensimmäinen on mikä tahansa muuttuja ja toinen muuttujan tyypin tai luokan tunniste tai useamman sisältävä monikko; paluuarvo kertoo onko muuttuja jokin määritellyistä tyypeistä. Tässä esimerkki edellämainitun funktion käytöstä. {code} def Sum(a): sum = 0.0 if isinstance(a, (int, float, complex)): sum = a elif isinstance(a, (tuple, list)): for i in a: sum += i return sum input("Paina Enter näppäintä lopettaaksesi...") {code} |
Funktio
...
Sum
...
tarkastaa
...
ensin
...
onko
...
annettu
...
muuttuja
...
jokin
...
numeerisista
...
muuttujista
...
ja
...
palauttaa
...
vain
...
sen,
...
jos
...
niin
...
on.
...
Jos
...
parametri
...
sen
...
sijaan
...
on
...
lista
...
tai
...
monikko,
...
niin
...
alkiot
...
käydään
...
yksitellen
...
läpi
...
ja
...
tulostetaan
...
niiden
...
summa
...
-
...
joka
...
onnistuu
...
vain
...
jos
...
yhteenlasku
...
operaattori
...
toimii.