Tässä onkin yllättäen edellinen pythonpostaus

Pythonin syntaksin yksinkertaisuus ja sen aiheuttama hankaluus piilee tyyppijärjestelmässä. Lyhyiden taustatietojen jälkeen käsitellään, miten voit selvittää tyypin pythonissa ja miksi tyypin selvittäminen on oleellistä oppimisen alkuvaiheessa.

Pythonin alkuvaiheessa opiskelija törmää heti erilaisiin tyyppeihin, kuten kokonaislukuihin, desimaalilukuihin ja merkkijonoihin eli stringeihin.

Koodi, jossa näitä käytetään voisi näyttää vaikka tältä:

a = 10
b = 4
tulos = a / b
viesti = "Luvut ovat:"
print(viesti, a, "ja", b)
print("osamäärä:", tulos)

Tämä ohjelma tulostaa:

Luvut ovat: 10 ja 4
osamäärä: 2.5

Tulosteella ei oikeastaan ole merkitystä tässä, vaan oleellisempaa on tietää, mitä ovat muuttujien tyypit.

Tyypit

Tietokoneen tallentaessa pelkkiä ykkösiä ja nollia, tarvitaan jonkinlainen systeemi kertomaan, mitä ykköset ja nollat oikein tarkoittavat. Otetaan esimerkiksi seuraava luku: 01000001. Tietokone tallentaa sen sellaisenaan, mutta on kirjoitetusta tietokoneohjelmasta kiinni, tulkitaanko se sellaisenaan lukuna, 65 (binääri⇒desimaalimuunnos) vai onko kyseessä kirjain A (mm. ASCII-merkistön) mukaan.

Pythonissa tämä näyttäytyy siten, että jokaisen muuttujan yhteyteen tallennetaan tyyppitieto, eli tieto siitä, mitä tyyppiä muuttuja on.

Tyypin selvittäminen pythonissa

Muuttujia on neljä: a, b , tulos ja viesti. Mitkä niiden tyypit ovat?

Tämä on periaatteessa melko helppo tietää pelkästään koodia lukemalla: a ja b ovat tyyppiä int ja tulos on tyyppiä float. Viesti on tyyppiä str.

Mutta mistä tiedän?

Eräs vaihtoehto on suorittaa ohjelma kehitystympäristössä tai käyttämällä interaktiivista tulkkia, joka jättää ohjelman ns. rullaamaan, vaikka se pääsisi ohjelman loppuun. Nyt voit syöttää tulkkiin uusia komentoja, kuten tässä Thonny-ohjelman kuvakaappauksessa näkyy:

image
Kuva 1: Thonnyn perusnäkymä. Ohjelma on suoritettu, muuttujat on listattu oikealla ja komentotulkki odottaa alimmaisena uutta komentoa.

Nyt voidaan aloittaa tyypin selvittäminen. Pythonista löytyy tähän valmis funktio, type(), jolle annetaan parametrina muuttuja, jonka tyyppi1 halutaan selvittää.

Alaviitteitä:

1 Tekstissä sanottiin, että halutaan selvittää muuttujan tyyppi. Tämä on sikäli väärin: pythonissa nimenomaan _muuttu