Python 3/Yleistä
Python on nimetty brittiläisen komediaryhmä Monty Pythonin tunnetun Monty Pythonin lentävä sirkus -tv-sarjan mukaan.
Kieli
[muokkaa | muokkaa wikitekstiä]Python tukee monenlaisia ohjelmointiparadigmoja eli lähestymistapoja ohjelmointiin; sitä voi käyttää mm. olio-suuntautuneena, proseduraalisena (tarkemmin sanottuna rakenteellisena) tai funktionaalisena ohjelmointikielenä.
Python on dynaamisesti tyypittävä ohjelmointikieli, eli ohjelmoijan ei tarvitse erikseen määrittää muuttujille tyyppejä. C-ohjelmoija saattaa tehdä vakavia virheitä Python-ohjelmissa C-kääntäjän tiukan syntaksitarkistuksen puuttuessa, jos hän käyttää naiivia ohjelmointityyliä eikä tarkista muuttujien tyyppiä ja sisältöä ennen niiden käyttöä.
Toteutukset
[muokkaa | muokkaa wikitekstiä]Python-kielestä on tehty useita toteutuksia. Tunnetuimmat ovat C-ohjelmointikielellä tehty alkuperäinen (kielen määrittelevä) toteutus, Java-ohjelmointikielellä tehty Jython ja .NET-alustalla toimiva IronPython.
Python-tulkki ja -kirjastot on kehitetty avoimen lähdekoodin projektina ja niitä levitetään Pythonin oman lisenssin alaisena, joka on yhteensopiva myös GPL-lisenssin kanssa. Pythonin lisenssi sallii lisäksi kaikenlaisen kaupallisen käytön ja jopa kaupallisen uudelleenlevittämisen.
Python-koodin tulkitseminen ja ajoa edeltävä optimointi saattavat joskus olla hitaita prosesseja, ja Pythonia ajetaankin useimmiten tavukoodina hieman Javan tapaan. Tämä vie ohjelman suorituksesta pois kaikista hitaimman vaiheen, tulkkaamisen tavukoodiksi. Tulkkaamattoman Python-skriptin ajaminen saattaa olla moninkertaisesti tavallisen C-kielisen ohjelman ajamista hitaampaa.
Python eroaa useimmista muista ohjelmointikielistä erittäin dynaamisen sidonnan vuoksi. Pythonin ympärille rakentuneen ohjelmointikulttuurin mukaan useat ongelmat ratkaistaan kaksi kertaa. Ensin rakennetaan ongelmaan Python-kielinen toteutus. Jos toteutuksesta tulee suosittu, laajaltikäytetty tai muutoin lisää suorituskykyä tarvitseva, niin modulista rakennetaan myös C-kielinen, nopeampi ja vähemmän muistia kuluttava versio. Pythonin selkeä ilmiasu ja erittäin dynaaminen nimien sidonta ovat johtaneet siihen, että yleensä samaan tarkoitukseen ei näe useita Python-kielisiä toteutuksia.
Skriptin rakenne ja suorittaminen
[muokkaa | muokkaa wikitekstiä]Python-koodi kirjoitetaan tiedostoihin, joissa on .py-pääte. Tiedostot ajetaan komennolla
$ python3 tiedosto.py
Jos tiedosto on tallennettu muussa kuin UTF-8-muodossa, pitää tiedoston alkuun kirjoittaa erityinen merkistökoodauksen kertova kommentti.
# -*- coding: cp1252 -*-
Python 3:ssa oletusmerkistökoodaus on UTF-8, joten tätä riviä ei tarvita, jos tiedosto on tallennettu UTF-8 muodossa.
Jotta tiedoston voi suorittaa ilman suoraan ilman python3-tulkin kutsumista, voi tiedoston ensimmäiseksi riviksi kirjoittaa
#!/usr/bin/env python3
Jos tiedostossa on molemmat, tulee merkistökoodauskommentti toiseksi riviksi.
#!/usr/bin/env python3
# -*- coding: iso 8859-1 -*-
Tiedostolle pitää myös antaa suoritusoikeudet. Linuxissa ja muissa vastaavissa:
$ chmod u+x tiedosto.py
Nyt tiedoston voi käynnistää suoraan
$ ./tiedosto.py
tai klikkaamalla tiedoston kuvaketta.
Python/Hello, world!
[muokkaa | muokkaa wikitekstiä]Yleistä
[muokkaa | muokkaa wikitekstiä]- Funktioiden nimet on tapana aloittaa pienellä kirjaimella.
- Luokkien nimet on tapana aloittaa isolla kirjaimella.
Ensimmäinen ohjelma
[muokkaa | muokkaa wikitekstiä]- helppo tapa
print ('Hello, world!')
- funktio
def helloWorld(string):
print (string)
helloWorld('Hello, world!')
- luokka mukaan
class HelloWorld:
def __init__(self, string):
self.string = string
def printString(self):
print (self.string)
HelloWorld('Hello, world!').printString()
Tiedostoon kannattaa myös lisätä seuraava koodi, jonka sisään tulee pääohjelma
if __name__ == "__main__":
print("Hello world!")
Tässä testataan ensin suoritettiinko tiedosto pääohjelmana. Jos olemme pääohjelmassa suoritetaan if-lohkon komennot. Muuttuja __name__
on sisäänrakennettu muuttuja, joka sisältää nykyisen moduulin eli tiedoston nimen.
Harjoitustehtäviä
[muokkaa | muokkaa wikitekstiä]Johdanto: | |
---|---|
Tietotyypit ja tietorakenteet: |
Luvut - Merkkijonot - Lista - Monikko (tuple) - Sanakirja - Joukko (set) |
Ohjausrakenteet | |
Muut kielen rakenteet: |
Moduuli - Luokka - Funktio - Virheidenhallinta - Tiedosto |
Graafinen käyttöliittymä: | |
Harjoitustehtäviä: | |
Lisätiedot ja lähteet: |