Institute of Computer Science
  1. Main page
  2. Python koolis
ET
Log in

Python koolis

  • Sissejuhatus
  • Teemad

1. Paigaldamine
2. Kommentaarid
3. Muutujad
4. Andmetüübid
5. Sõned
6. Operaatorid
7. Sisend ja väljund
8. Tingimus
9. Tsükkel
10. Algoritm ja plokkskeem
11. Järjend
12. Sõnastik
13. Funktsioon
14. Failioperatsioonid
15. Moodulid
16. Objektid

  • PyGame
  • ÜLESANDED

13. Funktsioon ehk alamprogramm

Võimalik, et programmis leidub koodilõike, mida tahame programmi kestel kasutada korduvalt: arvutada etteantud andmete põhjal ruumala, väljastada kasutaja andmeid jne. Samuti on suure programmi puhul keeruline jälgida programmi struktuuri. Koodi lühendamiseks ja struktuuri parandamiseks kasutatakse funktsioone e. alamprogramme. Funktsioon on koodiridade plokk, millel on oma nimi.

def funktsioon():
     <käsk>
     <käsk>

Sel viisil defineeritud funktsiooni saab välja kutsuda e. selle alla kuuluvaid käske käivitada korduvalt niimoodi:

funktsioon()

Näiteks

def tekst():
     print("Pikk ekraanile väljastatav lause.")
tekst()
tekst()
tekst()

Ülaltoodud näites kutsutakse funktsiooni tekst() välja kolm korda, seega trükitakse ka lauset kolm korda. Kui funktsioon on defineeritud, võib seda välja kutsuda suvalisest kohast programmi sees.

Argumendid

Sageli on kordamist vajavad operatsioonid küll sarnased, kuid neid tuleb teha erinevate andmetega: kokku liita erinevaid arve, välja trükkida erinevate kasutajate andmeid jne. Sel juhul saame funktsioonile ette anda argumente, mida kasutades ta käske käivitab. Argumendid kirjutatakse komadega eraldatult sulgudesse funktsiooni väljakutsumisel ning nende väärtused võrdsustatakse muutujatega funktsiooni defineerimisel. Saadud muutujaid saab funktsiooni sees kasutada, kuid väljaspool funktsiooni mitte.

def tervita(nimi):
     print("Ole tervitatud, " + nimi)
tervita("Siim")
tervita("Kadri")
def liida(arv1, arv2):
     print("Arvude " + str(arv1) + " ja " + str(arv2) + " summa on " + str(arv1 + arv2))
liida(20, 30)
liida(5, 3)

Tulemuste tagastamine

Toodud näidetes toimus funktsiooni sees andmete väljatrükk. Mõnikord on vaja, et funktsiooni töö tulemusi vajatakse kusagil väljaspool funktsiooni: tulemuse alusel jätkatakse arvutusi vms. Sel juhul tagastatakse funktsiooni töö tulemus käsuga return ning loomulikult võetakse tagastatud tulemus ka funktsiooni käivitades vastu.

def liida(arv1, arv2):
     summa = arv1 + arv2
     return summa
summa1 = liida(20, 30)
print("Kahe esimese arvu summa on " + str(summa1))
summa2 = liida(5, 3)
print("Kahe järgmise arvu summa on " + str(summa2))
kogusumma = liida(summa1, summa2)
print("Arvude kogusumma on " + str(kogusumma))

Toodud programmis kasutatakse funktsiooni liida() kolm korda, viimasel korral kasutatakse argumentidena kahel eelmisel korral saadud tulemusi.

Muutujate väärtuste kehtivuse ulatus e. skoop

Kõikide muutujate väärtused, mida me funktsioonis kasutame, kehtivad ainult funktsiooni sees. Nagu nägime: elleks, et tagastada tulemusi väljapoole funktsiooni, kasutasime käsku "return". Samas on mõnikord sellisel moel väljaspool funktsiooni kehtivate muutujate väärtustamine vaevarikas, seepärast võime funktsiooni algusesse (pärast funktsiooni definitsiooni) kirjutada käsu "global <muutuja_nimi>", näiteks:

global punktisumma

Nii ütleme programmile, et muutuja "punktisumma" pole mitte selle funktsiooni sisene, vaid selles funktsioonis kasutatakse väljaspool funktsiooni deklareeritud muutujat "punktisumma". Nii saab ka funktsiooni sees kasutada seda muutujat, näiteks lugeda või muuta selle väärtust.


Creative Commons litsentsiga Autorile viitamine + Mitteäriline eesmärk 3.0 Eesti (CC BY-NC 3.0 EE) - https://creativecommons.org/licenses/by-nc/3.0/ee/

  • Institute of Computer Science
  • Faculty of Science and Technology
  • University of Tartu
In case of technical problems or questions write to:

Contact the course organizers with the organizational and course content questions.
The proprietary copyrights of educational materials belong to the University of Tartu. The use of educational materials is permitted for the purposes and under the conditions provided for in the copyright law for the free use of a work. When using educational materials, the user is obligated to give credit to the author of the educational materials.
The use of educational materials for other purposes is allowed only with the prior written consent of the University of Tartu.
Terms of use for the Courses environment