...
Pythonissa
...
funktiot
...
ovat
...
aivan
...
kuin
...
muut
...
muuttuja
...
tyypit,
...
eli
...
niitä
...
voi
...
sijoittaa
...
muuttujiin.
...
Tästä
...
johtuen
...
funktioita
...
voi
...
välittää
...
esim.
...
parametreina
...
muille
...
funktioille
...
tai
...
säilöä
...
kokoelmaan,
...
josta
...
niitä
...
voidaan
...
kutsua
...
halutulla
...
tavalla.Avainsanan
...
def
...
avulla
...
tehdyn
...
funktion
...
tunniste
...
on
...
def
...
avainsanan
...
jälkeen
...
oleva
...
nimi;
...
jättämällä
...
parametrilistauksen
...
pois,
...
tunnisteen
...
voi
...
sijoittaa
...
toiseen
...
muuttujaan.
Tässä esimerkissä tehdään kolme funktiota, jotka sijoitetaan listan alkioiksi ja kutsutaan niitä erilaisilla parametreilla.
Code Block |
---|
Tässä esimerkissä tehdään kolme funktiota, jotka sijoitetaan listan alkioiksi ja kutsutaan niitä erilaisilla parametreilla. {code} def Square(x): return x * x def Cube(x): return x * x * x def SquareOfSubtraction(x, y): return (x - y) ** 2 L = [Square, Cube, SquareOfSubtraction] print(L[0](7)) print(L[1](3)) print(L[0](5)) print(L[2](12, 7)) input("Paina Enter-näppäintä lopettaaksesi...") {code} |
Avainsana
...
lambda
...
on
...
toinen
...
tapa
...
tehdä
...
funktioita.
...
Sen
...
avulla
...
tehdää
...
ns.
...
lambda
...
lauseke,
...
joka
...
on
...
käytännössä
...
funktio
...
ilman
...
tunnistetta,
...
mutta
...
jonka
...
voi
...
sijoittaa
...
muuttujaan
...
niinkuin
...
muutkin
...
funktiot.
...
Parametrit
...
listataan
...
pilkulla
...
erotettuna
...
avainsanan
...
lambda
...
jälkeen,
...
joiden
...
jälkeen
...
kaksoispiste,
...
jota
...
puolestaan
...
seuraa
...
ilmaus,
...
jonka
...
arvon
...
funktio
...
palauttaa
...
-
...
avainsanaa
...
return
...
ei
...
käytetä
...
tässä.
Tässä edellinen esimerkki käyttäen lambda lausekkeita.
Code Block |
---|
Tässä edellinen esimerkki käyttäen lambda lausekkeita. {code} Square = lambda x: x * x Cube = lambda x: x * x * x SquareOfSubtraction = lambda x, y: (x - y) ** 2 L = [Square, Cube, SquareOfSubtraction] print(L[0](7)) print(L[1](3)) print(L[0](5)) print(L[2](12, 7)) input("Paina Enter-näppäintä lopettaaksesi...") {code} |
Koska
...
lambda
...
on
...
lauseke,
...
se
...
ei
...
voi
...
sisältää
...
usean
...
rivin
...
koodiosiota
...
niinkuin
...
avainsanaa
...
def
...
käytettäessä;
...
samasta
...
syystä
...
se
...
voi
...
koodissa
...
esiintyä
...
paikoissa,
...
missä
...
def
...
rakenne
...
ei
...
kuten
...
listan
...
alkiona.
...
Tässä
...
edellinen
...
esimerkki
...
sijoittaen
...
lambda
...
lausekkeet
...
suoraan
...
listan
...
alkioiksi
...
sijoittamatta
...
niitä
...
ensin
...
muuttujiin.
Code Block |
---|
} L = [lambda x: x * x, lambda x: x * x * x, lambda x, y: (x - y) ** 2] print(L[0](7)) print(L[1](3)) print(L[0](5)) print(L[2](12, 7)) input("Paina Enter-näppäintä lopettaaksesi...") {code} |
Vaikka
...
lauseke
...
asettaakin
...
rajoitteita
...
pitempien
...
funktioiden
...
määrittelyssä
...
voi
...
avainsana
...
lambdan
...
avulla
...
tehdä
...
samat
...
funktiot
...
kuin
...
avainsanalla
...
def.
...
Normaalisti
...
kumminkin
...
on
...
parempi
...
käyttää
...
avainsanaa
...
def
...
monimutkaisten
...
ja
...
pitkien
...
lausekkeiden
...
sijaan.
...
Silti
...
lambda
...
lauseke
...
toimii
...
hyvin,
...
jos
...
on
...
tarvetta
...
määritellä
...
pieniä
...
koodin
...
pätkiä
...
ohjelman
...
eri
...
osille
...
suoritettavaksi
...
kuten
...
ns.
...
takaisinkutsu
...
funktioissa.