目次
- 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äärtusPä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 defineerimiseksdef 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) # 7See 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) # globalSelles 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) # changed6. 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)) # 25Dekoraatorid
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 kasutadadef 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 tagastaMis 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) # 15Kuidas 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


