Lihtsaid (matemaatilisi) funktsioone saab defineerida lambda-avaldistena. Näiteks raskuskiirendus sõltuvana laiuskraadist:
raskuskiirendus = lambda ϕ: 9.780327 * (1 + 0.0053024*sin(ϕ)**2 - 0.0000058*sin(2*ϕ)**2)
Funktsiooni kasutamine:
# from scipy.constants import degree
g = raskuskiirendus(59.42 * degree) # tagastab g väärtuse Eesti laiuskraadil
Mitut (arvutus)etappi sisaldav funktsioon tuleb kirja panna
tavapärasel viisil, kasutades võtmesõna def
. Matemaatiline tüüpnäide
võiks olla regressioonsirge parameetrite arvutamine:
def sobita_sirge(x, y):
n = len(x)
Σx = np.sum(x)
Σy = np.sum(y)
Σxx = np.sum(x**2)
Σxy = np.sum(x*y)
a = (n*Σxy - Σx*Σy) / (n*Σxx - Σx**2)
b = (Σy - a*Σx) / n
s = sqrt(np.sum((y - a * x - b)**2) / (n - 2))
ua = s / sqrt(Σxx - Σx**2 / n)
ub = ua * sqrt(Σxx / n)
return (a, ua), (b, ub)
Arvutuse faktoriseerimise eesmärgil on siin sisse toodud hulk lokaalseid
muutujaid. Mõistagi võib funktsiooni definitsioonis kasutada kõiki
programmeerimisvõimalusi (if
, for
, while
, jne).
(Arvutus)tulemuse võib tagastada suvalisel etapil return
-lausega.
Mitu skalaarset väärtust saab tagastada kokku pakituna ennikusse (nagu toodud näites).
Funktsiooni väljakutsel saab saadud enniku sisu koheselt lahti pakkida eraldi
muutujatesse:
(a, ua), (b, ub) = sobita_sirge(aeg, signaal)