Tako je. Ono što funkcija radi je definirano u tijelu funkcije, a s kojim vrijednostima će to nešto raditi zadaje se pomoću argumenata. Tijelo funkcije je sve ono što ide ispod
def ime_funkcije(arg1, arg2, arg3), pri čemu su
arg1, arg2 i
arg3 argumenti.
Osim toga što se "razbijanjem" koda na funkcije dobiva na čitljivosti te lakšem pronalaženju i popravljanju grešaka, jedna od glavnih svrha njihovog korištenja je tzv.
reusability, tj. ista funkcija može se koristiti u različitim programima i za potpuno različite stvari. Bullet1 je naveo kao primjer funkciju
suma i s njom je zbrajao cijene voća. Ista ta funkcija može se kasnije u nekom drugom programu koristiti npr. za zbrajanje kilometara od Zagreba do Rijeke i od Rijeke do Splita. Naravno, ako će je se koristiti za zbrajanje kilometara, bilo bi primjerenije da se
artikl1 i
artikl2 preimenuju u nešto poput
kilometri1 i
kilometri2 jer bi bilo lakše za razumijeti u okviru tog programa, pa bi to izgledalo ovako:
Code:
def suma(kilometri1, kilometri2):
rezultat = kilometri1 + kilometri2
return rezultat
# Cestovne udaljenosti izmedu gradova su sljedece:
zagreb_rijeka = 170
rijeka_split = 360
''' Koliko cu kilometara prijeci ako krenem iz Zagreba, prespavam u Rijeci i
nastavim dalje prema Splitu? '''
udaljenost = suma(zagreb_rijeka, rijeka_split)
print udaljenost
Isti taj program mogao se napisati i bez da se išta u Bulletovom kodu mijenja, osim vrijednosti varijabli, samo je manje čitljivo i može biti zbunjujuće za onoga tko će čitati taj kod:
Code:
def suma(artikl1, artikl2):
rezultat = artikl1 + artikl2
return rezultat
# Cestovne udaljenosti izmedu gradova su sljedece:
jabuka = 170
kruska = 360
''' Koliko cu kilometara prijeci ako krenem iz Zagreba, prespavam u Rijeci i
nastavim dalje prema Splitu? '''
trosak = suma(jabuka, kruska)
print trosak
Oba programa bi na ekran trebala ispisati 530.