3.3. Funkcije¶
Mogućnost definiranja novih funkcija je osnovna stepenica k naprednijem
programiranju.
U Pythonu funkcije se definiraju korištenjem ključnih riječi def
i
return
, te blokova kôda koji su konzistentno uvučeni
>>> def h(x):
... "Kvadriraj broj x."
... return x**2
>>> print(h(3))
9
Kao prvi red tijela funkcije može se, kao gore, staviti dokumentacijski string
(tzv. docstring ) kojem se kasnije može pristupiti standardnim metodama
pristupa dokumentaciji. (Dakle, h?
će ispisati dokumentacijski string.)
Funkcija može imati i opcionalne argumente s defaultnom vrijednošću:
>>> def fun(x, n=1, b=0):
... return x**n + b
>>> fun(3, 4, 5)
86
>>> fun(3, b=5, n=4)
86
>>> fun(3)
3
Uočite da zahvaljujući eksplicitnom imenovanju opcionalnih argumenata ne moramo paziti na njihov poredak.
Bilo što može biti argument funkcije. Najmoćnija stvar, obilato korištena u funkcionalnom pristupu programiranju, je da i same funkcije mogu biti argumenti funkcija:
>>> def twice(f, x):
... "Komponiraj dvaput funkciju sa samom sobom"
... return f(f(x))
>>> from scipy import *
>>> print(twice(sqrt, 16))
2.0
Zadatak 1
Isprogramirajte funkciju fib(n)
koja računa n-ti
član Fibonaccijevog niza
(niz kod kojeg je svaki član definiran kao zbroj prethodna dva, a javlja
se pri analizi idealizirane populacije zečeva). fib(4) = 3
.
Zadatak 2
Isprogramirajte funkciju fibBinet(n)
koja računa n-ti
član Fibonaccijevog niza putem Binetove formule
gdje je \(\varphi = 1.618\ldots\) tzv. zlatni omjer
>>> from scipy.constants import golden_ratio
>>> golden_ratio
1.618033988749895
Uvjerite se da dobivate dobre vrijednosti za neke n
.