Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
Comment: Migration of unmigrated content due to installation of a new plugin

...

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.