Andrise programmeerimisalane WIKI

Keele struktuurid

Muutujad ja andmetüübid

Muutujad esitatakse nende nimelisel kujul ilma igasuguste prefiksiteta. Kui PHP's kirjeldatakse muutujaid kujul $nimi ja PERL'is on näiteks massiivid kujul %nimi, siis Pythonis piisab kõikide muutujate kirjeldamiseks kujust nimi.

Muutujaid eelnevalt defineerida pole vaja, need luuakse vastavas skoobis esimese kasutuse korral automaatselt. Kehtib ka sulund, mis tähendab, et välises skoobis defineeritud muutuja on ligipääsetav ka sisemises skoobis. Seega programmi alguses väljaspool funktsioonide definitsioone loodud muutujad on ligipääsetavad ka allpool defineeritud funktsioonides, kuna funktsioonid on programmi põhivoo suhtes alamat laadi skoobid.

Tekst

Tekste saab hoida muutujates stringidena. Stringe määravad sarnaselt paljudele teistele keeltele jutumärgid " ja ülakomad '. Kui tekstis esineb täpitähti, tasub need vormistada UTF-8 sümbolitena, see aga tähendab, et Pythonile tuleb teada anda stringi kodeering. Seda saab teha lisades stringi ette tähemärgi u.

tekst = u"see on UTF-8 tekst"
print tekst

Tekstide vormindamiseks saab kasutada mitmeid variante. Kõige lihtsam on stringide liitmine, mida saab teha operaatoriga +.

print u"Täna on " + kuu_nimi

Tihtipeale on mugavam kasutada aga spetsiaalselt vormindamisoperaatorit %.

print u"Täna on %s" % kuu_nimi

Mitme elemendi korral saab antud operaatorit kasutada nii:

print u"Täna on %s ja aasta on %s" % (kuu_nimi, aasta_nr)

Sellise avaldise tulemusena väljastataks Täna on jaanuar ja aasta on 2010

Numbrid

Sarnaselt PHP'ga numbritüüpi (näiteks double, float, word, integer jne) eraldi defineerida pole vaja ning numbreid saab kohe kasutama hakata. Probleemiks võib vaid osutuda erinevate arvude jagamine, kuna juhul kui Python peab numbrit mida jagatakse täisarvuks (integer), siis tulemuseks saab samuti täisarv ning murdosa lõigatakse lihtsalt ära. Seega tuleb jagamise hetkeks number ujukomaarvuks teisendada

7 / 2 = 3
7.0 / 2 = 3.5
float(7) / 2 = 3.5

Massiivid

Massiivide kirjeldamiseks on sarnaselt JavaScript massiividele nurksulud ning nende sees on elemendid eraldatud komadega. Massiivide pikkused pole määratud, st. et nendele saab vajadusel alati liikmeid juurde lisada. Elementide indeksid algavad numbrist 0.

massiiv = [u"tere", u"kuidas", u"läheb"]

Näites on defineeritud massiiv kolme elemendiga tere, kuidas ja läheb. Juhul kui on soov opereerida esimese elemendiga, saab seda teha samuti läbi nurksulgude, mis lisatakse muutuja järele.

print massiiv[0]

Assotsiatiivsed massiivid

Kui tavamassiivide indeksid on numbrilised ja lähevad järjest, siis assotsiatiivsed massiivid on tekstiliste indeksitega massiivid. Sellise massiivi defineerimiseks saab kasutada loogelisi sulge.

objekt = {
   "võti": u"väärtus",
   "key": u"value"
}

Võtmete nimed peavad olema jutumärkides. Kasutada saab sellise massiivi elemente sarnaselt tavamassiividega:

print objekt["võti"]

Tsüklid

FOR tsükkel

FOR tsükkel Pythonis kujutab endast midagi PHP foreach tsükli laadset. Tsükli üheks parameetriks on massiiv või mõni loendatav objekt, millest võetakse ükshaaval elemente ja omistatakse need muutuja väärtuseks, kuni massiivi elemendid on kõik läbi käidud.

for väärtus in massiiv:
  print väärtus

Näide väljastab ükshaaval massiivi kõikide elementide väärtused.

Lisaks väärtustele saab pärida ka võtmete nimetusi, eriti oluline on see objektide juures, kus võtmed ei pruugi olla numbrilised.

for võti, väärtus in loendatav_objekt:
  print u"võtme %s väärtuseks on %s" % (võti, väärtus)

WHILE tsükkel

WHILE tsüklit täidetakse seni, kuni tsüklitingimus pole enam täidetud.

loendur = 0
while loendur<10:
  loendur += 1

Näites täidetakse tsüklit seni, kuni muutuja loendur väärtus on veel alla 10, kusjuures iga tsükli sammu juures suurendatakse muutuja loendur väärtust 1 võrra.

Tingimuslause IF

Tingimuslause IF töötab sarnaselt paljudele teistele keeltele, kontrollides tingimuse tõesust ja käivitades tingimusele vastava bloki. Kui tingimus on täidetud, siis käivitatakse üks, vastasel korral aga teine blokk.

if tingimus:
  tee_midagi_1()
elif tingimus2:
  tee_midagi_2()
else:
  tee_midagi_3()

elif ja else laused pole tingimuslause puhul kohustuslikud.

Funktsioonide defineerimine

Funktsioone saab defineerida märksõnaga def.

def funktsioon(parameeter):
  print parameeter
funktsioon(1) # väljastatakse 1

Kui funktsioon peab lõpetama töö või kui funktsioon tahab tagastada mingit väärtust, saab selleks kasutada käsklust return.

def ruut(nr):
  return nr*nr
print ruut(5) # väljastatakse 25 (5x5)

Kui funktsiooni mõni sisendparameeter pole kohustuslik, võib sellele määrata vaikimisi väärtuse ning kui sisendparameetrit määratud pole, saabki parameeter endale selle vaikimisi väärtuse.

def funktsioon(nr = 5):
  print nr
funktsioon(3) # muutuja nr väärtuseks saab 3
funktsioon()  # parameeter on sisestamata, muutuja nr väärtuseks saab 5

Veahaldus

Vigade püüdmiseks on olemas ka teistest keeltest tuttav käsklus try. Kuid erinevalt PHP-st ja JavaScriptist, kus käsule try järgneb catch, moodustavad Pythonis sama paari käsklused try ja except.

try:
  a = 5/0 # tekib viga, kuna nulliga ei saa jagada
except:
  print u"ilmus viga!"

Klassid

Klasside defineerimiseks on käsklus class

class KlassiNimi([Esivanem]):
  omadus = väärtus
  def meetod(self [, parameetrid]):
    tee_midagi()

Esivanem on mõni muu klass, mida loodav klass laiendab ning millelt pärib selle olemasolevad omadused ja meetodid.

Klassi kõikide meetodite puhul tuleb esimeseks sisendparameetriks määrata eriväärtuse self, mis on viit klassist loodud objekti juurde. Kui võrrelda näiteks PHP klasside defineerimisega, siis PHP's täidab sama rolli muutuja $this, kuid PHP's on antud muutuja seatud juba automaatselt, mitte ei ole vaja kuidagi spetsiaalselt sisendparameetrina määrata.

Pythoni kõikide võimaluste uurimiseks tasub külastada Pythoni dokumentatsiooni http://docs.python.org/