Het concept “anonieme functies” mag je als optioneel materiaal beschouwen: anonieme functies worden niet vaak gebruikt en zijn nooit nodig. Maar om het verhaal over functies compleet te krijgen, bediscussieer ik ze hier.
Python staat het toe om functies te creëren die geen naam hebben. De functie kan aan een variabele toegekend worden, en je kunt die variabele dan gebruiken alsof het een functie is. Je gebruikt hiervoor de volgende syntax:
lambda <parameters>: <actie>
lambda
is een gereserveerd woord. <parameters>
is een serie parameter
namen, van elkaar gescheiden middels komma’s als er meer dan één is.
<actie>
is één commando. De anonieme functie heeft geen return
, maar
de waarde van <actie>
wordt gebruikt als retourwaarde.
Bijvoorbeeld, de volgende code creëert een anonieme functie die het
kwadraat van de parameter berekent. De functie wordt toegekend aan de
variabele f
. f
kan dan worden gebruikt als functie om de kwadraten
van getallen te berekenen.
f = lambda x: x*x
print( f(12) )
Deze code is exact gelijk aan de volgende code:
def f( x ):
return x*x
print( f(12) )
Dus anonieme functies zijn niet anders dan reguliere functies, maar
beperkter aangezien ze slechts kunnen bestaan uit een enkele regel code.
Waarom worden ze dan door Python ondersteund? Er is heel wat
gedebatteerd onder de mensen die Python ontwikkelen over de vraag of
lambda
in de taal moet blijven. Het is ooit opgenomen in Python omdat
het ook zit in andere talen, specifieke in functionele programmeertalen
als Lisp en Haskell, die bestaan bij gratie van het concept van anonieme
functies. Maar lambda
in Python is lang niet zo krachtig als lambda
in die andere talen, en, zoals ik liet zien, eigenlijk overbodig. De
voornaamste reden dat het nog steeds in Python zit is als restant van
het verleden en het belang dat de voorstanders van het gereserveerde
woord eraan hechten.
Af en toe hebben anonieme functies nut, omdat ze een programma iets beter leesbaar kunnen maken. Ik toon hiervan een voorbeeld in hoofdstuk 131.