Knyga/Daugiau apie funkcijas: Skirtumas tarp puslapio versijų

Iš Pitonas.
(Naujas puslapis: {{navigation |previous=Daugiau apie tekstines eilutes|next=Žodynai}} === 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 mo...)
 
Nėra keitimo santraukos
 
1 eilutė: 1 eilutė:
{{navigation |previous=Daugiau apie tekstines eilutes|next=Žodynai}}
{{navigation |previous=Daugiau apie tekstines eilutes|next=Žodynai}}
=== Ką išmoksi šiame skyriuje? ===
* Kaip Python perduoda parametrus į funkcijas – pagal reikšmę ar pagal nuorodą
* Kaip keičiasi elgesys, kai perduodamas skaičius ar sąrašas
* Kaip parašyti funkcijas, kurios nekeičia išorinių kintamųjų
* Ką reiškia programos skaidymas į mažesnes dalis („Skaldyk ir valdyk“)
* Kuo skiriasi smulkinamasis ir stambinamasis programavimas


=== Funkcijų parametrai ===
=== Funkcijų parametrai ===
17 eilutė: 24 eilutė:
</syntaxhighlight>
</syntaxhighlight>


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.
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 naudoja x – kopiją, o ne originalą.


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:
💡 Skaičius yra nekeičiamas tipas (immutable), todėl funkcija mato tik kopiją.
 
Kai parametras yra perduodamas kaip kintamojo nuorodą į sąrašą, funkcija gali modifikuoti kintamąjį tiesiogiai. Tai reiškia, kad, kai funkcija yra baigta, originalus kintamasis taip pat bus modifikuotas. Čia yra pavyzdys:


<syntaxhighlight lang="python">
<syntaxhighlight lang="python">
def keisti_adresą(x):
def keisti_nuorodą(x):
   x.append(5)
   x.append(5)
   print("Funkcijos viduje x=", x)
   print("Funkcijos viduje x=", x)
28 eilutė: 37 eilutė:
# pagrindinė programa
# pagrindinė programa
a = [1, 2, 3, 4]
a = [1, 2, 3, 4]
keisti_adresą(a)
keisti_nuorodą(a)
print("Po funkcijos a=", a)
print("Po funkcijos a=", a)
</syntaxhighlight>
</syntaxhighlight>


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.
Funkcijoje keisti_nuorodą() mes paduodame a nuorodą į sąrašą, 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.
 
💡 Sąrašai yra keičiami (mutable), todėl funkcija gali juos pakeisti tiesiogiai.


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.
Tai yra svarbus skirtumas tarp reikšmių ir nuorodos į sąrašą perdavimo mechanizmų Python kalboje. Pasirinkęs tinkamą perdavimo mechanizmą, gali užtikrinti, kad tavo funkcijos veikia taip, kaip tikiesi.


=== Skaldyk ir valdyk ===
=== 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”.
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.
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ų nebeį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.





Dabartinė 15:36, 6 rugpjūčio 2025 versija


Ką išmoksi šiame skyriuje?

  • Kaip Python perduoda parametrus į funkcijas – pagal reikšmę ar pagal nuorodą
  • Kaip keičiasi elgesys, kai perduodamas skaičius ar sąrašas
  • Kaip parašyti funkcijas, kurios nekeičia išorinių kintamųjų
  • Ką reiškia programos skaidymas į mažesnes dalis („Skaldyk ir valdyk“)
  • Kuo skiriasi smulkinamasis ir stambinamasis programavimas

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 naudoja x – kopiją, o ne originalą.

💡 Skaičius yra nekeičiamas tipas (immutable), todėl funkcija mato tik kopiją.

Kai parametras yra perduodamas kaip kintamojo nuorodą į sąrašą, 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_nuorodą(x):
  x.append(5)
  print("Funkcijos viduje x=", x)
    
# pagrindinė programa
a = [1, 2, 3, 4]
keisti_nuorodą(a)
print("Po funkcijos a=", a)

Funkcijoje keisti_nuorodą() mes paduodame a nuorodą į sąrašą, 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.

💡 Sąrašai yra keičiami (mutable), todėl funkcija gali juos pakeisti tiesiogiai.

Tai yra svarbus skirtumas tarp reikšmių ir nuorodos į sąrašą 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ų nebeį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.


Skaldyk ir valdyk.

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”