Vadovėlis/Daugiau apie funkcijas
Funkcijų parametrai
Python kalboje parametrų perdavimo būdas priklauso nuo to, kaip jie deklaruojami funkcijos apibrėžime. Perduodant parametrą į funkciją Python naudoja nuorodų perdavimo mechanizmą, tačiau priklausomai nuo to, kaip parametras perduodamas, galime stebėti skirtingą elgesį.
Kai parametras yra perduodamas kaip reikšmė, funkcija sukuria savo kopiją, ir kai ji yra modifikuojama funkcijoje, originali reikšmė nepasikeičia. Čia yra pavyzdys:
def keisti_reikšmę(x): x += 5 print("Funkcijos viduje x=", x) # pagrindinė programa a = 10 keisti_reikšmę(a) print("Po funkcijos a=", a)
Funkcijoje keisti_reikšmę() sukuriame naują kintamajį x, kuris yra lygus a reikšmei, ir prie jo pridedame 5. Tačiau, kai funkcija yra baigta, a reikšmė nepasikeičia, nes funkcija veikia su x reikšme, kuri yra jos kopija.
Kai parametras yra perduodamas kaip kintamojo adresas, funkcija gali modifikuoti kintamąjį tiesiogiai. Tai reiškia, kad, kai funkcija yra baigta, originalus kintamasis taip pat bus modifikuotas. Čia yra pavyzdys:
def keisti_adresą(x): x.append(5) print("Funkcijos viduje x=", x) # pagrindinė programa a = [1, 2, 3, 4] keisti_adresą(a) print("Po funkcijos a=", a)
Funkcijoje keisti_adresą() mes paduodame a adresą, o ne jo kopiją, todėl funkcija gali tiesiogiai modifikuoti originalų kintamąjį. Šiuo atveju a yra papildoma nauja reikšme, ir kai funkcija yra baigta, a reikšmė pasikeičia, nes ji tiesiogiai buvo modifikuota funkcijos.
Tai yra svarbus skirtumas tarp reikšmių ir adreso perdavimo mechanizmų Python kalboje. Pasirinkęs tinkamą perdavimo mechanizmą, gali užtikrinti, kad tavo funkcijos veikia taip, kaip tikiesi.
Skaldyk ir valdyk
Kai norėsi spręsti didelę ir sudėtingą užduotį - visų pirma išskaidyk ją į mažesnes dalis (funkcijas). Toks programavimo metodas vadinamas “Skaldyk ir valdyk”.
Taikant "skaldyk ir valdyk" metodą, sprendžiama užduotį mes padaliname į mažesnius uždavinius ir kiekvienas uždavinys sprendžiamas atskirai. Toliau dalijant uždavinius į dar mažesnius uždavinius, galiausiai galime pasiekti etapą, kai padalyti uždavinių nebebus įmanoma. Tuomet yra sprendžiamos šios mažiausios įmanomos mini užduotėlės (frakcijos). Galiausiai visų dalinių uždavinių sprendiniai sujungiami, kad būtų gautas pradinio uždavinio sprendinys.
Programos skaldymas į mažesnes dalis dar vadinamas “smulkinamasis programavimas”. Tuo tarpu priešingas veiksmas - sujungimas funkcijų į vis stambesnes funkcijas, kol galiausiai į vieną didelę programą vadinamas “stambinamasis programavimas”