- 1 1. Mis on def Pythonis?
- 2 2. def põhistruktuur ja kasutusviisid
- 3 3. Funktsioonide argumendid ja vaikeväärtused
- 4 4. Väärtuse tagastamine return lausega
- 5 5. Muutujate ulatus ja eluaeg
- 6 6. Praktilised näited ja kasutusviisid
- 7 7. Täiustatud funktsioonikontseptsioonid
- 8 8. Kokkuvõte
- 9 9. Korduma kippuvad küsimused (KKK)
1. Mis on def
Pythonis?
def
võtmesõna Pythonis kasutatakse funktsioonide defineerimiseks. Funktsioonid on põhilised struktuurid, mis aitavad koodi taaskasutada ja programme paremini organiseerida. def
abil saab luua koodiploki, mis täidab teatud ülesande ning mida saab korduvalt kasutada. See parandab koodi loetavust ja aitab vähendada vigade tekkimise tõenäosust.
def
võtmesõna põhistruktuur
Põhiline süntaks on järgmine:
def funktsiooni_nimi(argument1, argument2, ...):
toimingud
return tagastusväärtus
Pärast def
kirjutatakse funktsiooni nimi ning sulgudesse vajalikud argumendid. Seejärel kirjutatakse kooloni järel sisuga plokk (indenteeritult). Vajadusel saab väärtust tagastada return
lausega.
2. def
põhistruktuur ja kasutusviisid
Kuidas defineerida põhifunktsiooni
Funktsiooni defineerimiseks def
abil tuleb määrata funktsiooni nimi, argumentide loetelu ja sisu. Näiteks järgmine kood näitab lihtsat funktsiooni, mis väljastab “Hello, World!”:
def say_hello():
print("Hello, World!")
Selle funktsiooni saab kutsuda välja say_hello()
, mis kuvab konsoolis “Hello, World!”.
Indenteerimise olulisus
Pythonis on indenteerimine väga oluline. Kõik koodiread, mis asuvad funktsiooni sees, peavad olema samal indenteerimistasemel. Indenteerimine määrab koodi struktuuri ja plokid, ning valesti indenteeritud kood tekitab vigu.
Funktsiooni väljakutsumine
Defineeritud funktsiooni kutsutakse välja, lisades funktsiooni nimele sulud. Kui on argumendid, lisatakse need sulgude sisse.
say_hello()

3. Funktsioonide argumendid ja vaikeväärtused
Positsiooni- ja võtme-argumendid
Funktsioonid võivad võtta argumente, mis jagunevad positsiooniargumentideks ja võtme-argumentideks. Positsiooniargumendid edastatakse kindlas järjekorras, võtme-argumendid aga nime järgi ning neid võib anda suvalises järjekorras.
def greet(name, greeting="Hello"):
print(f"{greeting}, {name}!")
Ülaltoodud funktsioonis on greeting
vaikeväärtus. Kui kutsuda greet("Alice")
, kuvatakse “Hello, Alice!”.
Muutuva arvu argumendid
Mõnikord on vaja, et funktsioon aktsepteeriks muutuva arvu argumente. Pythonis saab selleks kasutada *args
ja **kwargs
.
def print_args(*args):
for arg in args:
print(arg)
print_args(1, 2, 3)
Selles näites võtavad *args
kõik argumendid vastu tuplena.
4. Väärtuse tagastamine return
lausega
return
lause kasutamine
Kui soovid funktsioonist arvutatud väärtust tagastada, kasuta return
-lauseid. Kui return
puudub, tagastab funktsioon vaikimisi None
.
def add(a, b):
return a + b
result = add(3, 4)
print(result) # 7
See add
funktsioon tagastab kahe arvu summa. return
abil saab väärtuse salvestada muutujasse.
Mitme väärtuse tagastamine
Pythonis saab funktsioon tagastada ka mitu väärtust, eraldades need komaga. Need väärtused tagastatakse tuplena.
def swap(a, b):
return b, a
x, y = swap(1, 2)
print(x, y) # 2 1

5. Muutujate ulatus ja eluaeg
Lokilised ja globaalsed muutujad
Funktsioonis defineeritud muutujad on lokaalsed ning neid saab kasutada ainult selles funktsioonis. Funktsiooni väliselt defineeritud muutujad on globaalsed ning neid saab kasutada kõikjal programmis.
x = "global"
def func():
x = "local"
print(x)
func() # local
print(x) # global
Selles näites on x
lokaalne muutuja funktsiooni func
sees ning ei mõjuta välist muutujat.
global
võtmesõna
Kui soovid funktsioonist muuta globaalset muutujat, kasuta global
võtmesõna.
x = "global"
def change_global():
global x
x = "changed"
change_global()
print(x) # changed
6. Praktilised näited ja kasutusviisid
Funktsioonidega programmi tõhustamine
Funktsioonide kasutamine aitab programmi tõhusamaks muuta. Näiteks korduvaid arvutusi või andmete töötlemist saab koondada ühte funktsiooni ning seeläbi vähendada koodi dubleerimist.
def calculate_area(radius):
return 3.14 * radius * radius
area1 = calculate_area(5)
area2 = calculate_area(10)
See näide defineerib funktsiooni calculate_area
, millega arvutada ringi pindala. Funktsiooni saab kasutada nii mitu korda kui vaja.
Funktsioonide kasutamise näide
Teine näide: funktsioon, mis vormindab teksti vastavalt soovitud joondamisele.
def format_text(text, alignment="left"):
if alignment == "left":
return text.ljust(20)
elif alignment == "right":
return text.rjust(20)
elif alignment == "center":
return text.center(20)
print(format_text("Hello", "center"))
See funktsioon vormindab teksti vasakule, paremale või keskele joondatult.

7. Täiustatud funktsioonikontseptsioonid
Pesastatud funktsioonid
Pythonis võib funktsiooni sees defineerida teise funktsiooni, mida nimetatakse pesastatud funktsiooniks. Seda saab kasutada ainult välise funktsiooni sees.
def outer():
def inner():
print("See on sisemine funktsioon")
inner()
Anonüümsed funktsioonid (Lambda)
lambda
võtmesõnaga saab luua anonüümseid (nimetuid) funktsioone, mis sobivad lihtsate ülesannete jaoks, mida kasutatakse vaid korra.
square = lambda x: x * x
print(square(5)) # 25
Dekoraatorid
Dekoraator on viis olemasoleva funktsiooni käitumise laiendamiseks ilma funktsiooni ennast muutmata. See on funktsioon, mis võtab argumendiks teise funktsiooni ja tagastab uue funktsiooni.
def decorator(func):
def wrapper():
print("Enne funktsiooni")
func()
print("Pärast funktsiooni")
return wrapper
@decorator
def say_hello():
print("Tere!")
say_hello()
8. Kokkuvõte
Selles artiklis selgitasime, kuidas kasutada def
võtmesõna Pythonis funktsioonide loomiseks, käsitlesime argumente, tagastusväärtusi, ulatust ja ka edasijõudnutele mõeldud teemasid. Funktsioonide kasutamine aitab ehitada paremini struktureeritud ja tõhusamaid programme. Proovi kasutada erinevaid funktsioone, et parandada oma Python programmeerimisoskusi!

9. Korduma kippuvad küsimused (KKK)
Mis vahe on return
ja print
vahel?
Kuigi return
ja print
võivad tunduda sarnased, täidavad nad erinevaid rolle. return
tagastab funktsioonist väärtuse, mida saab kasutada mujal programmis, näiteks salvestada muutujasse. print
kuvab väärtuse lihtsalt konsoolile, kuid seda väärtust ei saa hiljem kasutada.
def add(a, b):
return a + b
result = add(3, 4) # result salvestab väärtuse 7
print(result) # 7
def display_message():
print("Hello, World!")
display_message() # Kuvab "Hello, World!", kuid väärtust ei tagasta
Mis on pesastatud funktsioonide eelised?
Pesastatud funktsioonide abil saab luua lokaalseid funktsioone, millele väljastpoolt ligi ei pääse. See aitab kapseldada loogikat ja parandab koodi korduvkasutatavust. Samuti saavad pesastatud funktsioonid ligi välise funktsiooni ulatusele.
Millal kasutada muutuva arvu argumente?
Muutuva arvu argumente kasutatakse siis, kui pole teada, mitu argumenti funktsioon saab. Näiteks kui soovid kirjutada funktsiooni, mis arvutab suvalise arvu väärtuste summa.
def add_all(*args):
return sum(args)
result = add_all(1, 2, 3, 4, 5) # 15
Kuidas kasutada rekursiivseid funktsioone?
Rekursiivne funktsioon kutsub iseennast välja. Seda kasutatakse sageli probleemide lahendamiseks, mida saab jagada väiksemateks osadeks. Samas tuleb olla ettevaatlik, et vältida lõputut rekursiooni (stack overflow). Näiteks faktoriaali arvutamiseks:
def factorial(n):
if n == 0:
return 1
else:
return n * factorial(n-1)
result = factorial(5) # 120