Python (opas)

Python on korkean tason interaktiivinen olio-ohjelmointikieli. Se sisältää laajat luokkakirjastot erilaisia käyttötarkoituksia varten.

Tässä esityksessä käytetään Linux-järjestelmään asennettua Pythonia. Kieltä voi kuitenkin käyttää yhtä hyvin myös esimerkiksi Windows- ja Mac OS X-ympäristöissä.

Käynnistys, lopetus ja opastus

Interaktiivinen Python-tulkki antaa oivan mahdollisuuden kokeilla ja suorittaa lyhyitä ohjelmanpätkiä syöttämällä ne suoraan tulkille suoritettavaksi. Pidempiä ohjelmia on toki mahdollista kirjoittaa erilliseen tiedostoon suoritettavaksi. Tutustumme kieleen ensin interaktiivisessa tilassa.

Python-tulkki käynnistyy interaktiiviseen tilaan kirjoittamalla kometoriville python. Python käynnistyy kertoen versionsa ja antaa komentokehotteen, johon käyttäjä voi kirjoittaa käskynsä.

$ python  
Python 2.5.2 (r252:60911, Jul 22 2009, 15:35:03)  
[GCC 4.2.4 (Ubuntu 4.2.4-1ubuntu3)] on linux2  
Type "help", "copyright", "credits" or "license" for more information.  
>>>

Python-tulkista poistutaan funktiolla exit() tai quit() taikka näppäinyhdistelmällä ctrl-d.

Yleistä opastusta Python-tulkissa saa interaktiivisesti funktiolla help() ja opastusta tietystä luokasta saa komentamalla help(luokka).

Yleisimmät luokat

Python on toteutukseltaan erittäin oliosuuntautunut ja siinä lähes kaikki asiat ovat luokkia tai niiden instansseja, eli olioita. Itse asiassa, jopa itse luokat ovat olioita. Ne ovat Pythonin sisäänrakennetun metaluokan type instansseja.

Erillisiä osoitinmuuttujia Python-kielessä ei erikseen ole, mutta käytännössä kaikki kielen muuttujat kuitenkin ovat juuri osoittimia. Tämä tarkoittaa sitä, että kun monissa muissa ohjelmointikielissä muuttujan nimi viittaa aina johonkin muistipaikkaan, jossa sijaitsee muuttujan sisältö, Pythonissa muuttujan nimen viittaamassa muistipaikassa onkin varsinaisen sisällön osoite muistissa. Tämä asia tulee vastaan joissain tilanteissa, kun muuttujaan tallennettua sisältöä muutetaan. Tämä otetaan esille uudelleen, kun tulee puhetta listoista.

Siihen, että Python käsittelee kaikkia muuttujia osoittimina, liittyy osittain myös se Pythonin ominaisuus, että muuttujat eivät ole tyypitettyjä vaan niihin voi sijoittaa mitä tahansa olioita. Muuttujia ei tarvitse erikseen esitellä vaan niitä voi käyttää suoraan sijoittamalla niihin. Python tyypittää muuttujat dynaamisesti.

>>> a=4  
>>> b="sana"  
>>> a  
4  
>>> b  
'sana'

Luvut ja merkkijonot

Python käsittelee lukuja joko kokonaislukuina tai liukulukuina. Kokonaisluvut voivat olla käytännössä mielivaltaisen suuria. Python varaa luvuille riittävästi tilaa, kunhan vain muistia riittää.

Luvuille voidaan suorittaa laskuoperaatioita, joiden merkinnät ovat suurimmaksi osaksi varsin luonnollisia.

>>> 1+2  
3  
>>> 2*3  
6

Jos jokin laskuoperaation osapuolista on liukuluku, siirtyy Python käsittelemään operaation tulostakin liukulukuna.

>>> 1+2.  
3.0

Jakolasku on Pythonissa erityisasemassa. Se antaa erilaisen tuloksen riippuen siitä, ovatko jakolaskun molemmat osapuolet kokonaislukuja vai osallistuuko jakolaskuun liukuluku. Jos osoittaja tai nimittäjä on liukuluku, saadaan jakolaskusta tuloksena myös liukuluku. Kokonaislukujen jakolasku taas antaa tuloksena alas päin pyöristetyn kokonaisluvun.

>>> 4/3  
1  
>>> 1/3  
0  
>>> -1/3  
-1  
>>> -4/3  
-2

Tämä jakolaskun toteutus tulee kuitenkin muuttumaan tulevaisuudessa, koska yllä kuvatulle kokonaislukujen jakolaskulle on Pythonissa oma operaattorinsa //. Tulevaisuudessa yhdellä /-merkillä esitetty kokonaislukujen jakolasku tuottaa tuloksena liukuluvun, jos on tarpeen.

>>> 4//3  
1  
>>> 1//3  
0  
>>> -1//3  
-1  
>>> -4//3  
-2

Potenssiinkorotuksen operaattorina Pythonissa käytetään kahta tähtimerkkiä, **.

>>> 2**8  
256

Merkkijonot Pythonissa esitetään joko yksinkertaisin tai kaksinkertaisin lainausmerkein: 'näin' tai "näin". Näillä kahdella merkintätavalla on pieni ero, joka tulee esille tietyissä tilanteissa. Erityisesti kahdesta erilaisesta tavasta on kuitenkin hyötyä, jos esitettävä merkkijono itse sisältää lainaus- tai heittomerkin. Esimerkiksi:

>>> w = "Robert's Coffee"

Joskus merkkijonossa tarvitaan molempia merkkejä ja silloin on käytettävä muita keinoja. Tällöin apuun tulee ns. escape-merkki, jona myös Pythonissa käytetään (taka)kenoviivaa \.

>>> w2 = 'Wayne\'s "world"'

Tässä escape-merkkiä on käytetty riisumaan sitä seuraava merkki, eli ' erityismerkityksestään.

Säiliöluokat

Monikot

Listat

Sanakirjat

Joukot

Kontrollirakenteet

If-lause

For-silmukka

While-silmukka

Funktiot

Luokat ja modulit

Erilliseen tiedostoon tallennetut ohjelmat

NumPy, SciPy, Matplotlib

FAFLa