Cursus
Je kunt je eigen Python-functies schrijven met het sleutelwoord def, functieheaders, docstrings en functiebodies. Er is echter een snellere manier om functies on the fly te schrijven: dit zijn lambda-functies, omdat je het sleutelwoord lambda gebruikt.
Sommige functiedefinities zijn zo eenvoudig dat je ze kunt omzetten naar een lambda-functie. Door dit te doen, schrijf je minder regels code, wat behoorlijk handig is en vooral van pas komt wanneer je grote programma’s schrijft en onderhoudt.
lambda-functie
Hier herschrijven we onze functie raise_to_power als een lambda-functie. Na het sleutelwoord lambda geef je de namen van de argumenten op; vervolgens gebruik je een dubbele punt gevolgd door de expressie die aangeeft wat de functie moet retourneren.
raise_to_power = lambda x, y: x ** y
raise_to_power(2, 3)
8
Zoals gezegd kun je met lambda-functies snel en simpel functies schrijven. We raden niet aan om ze altijd te gebruiken, maar er zijn situaties waarin ze goed van pas komen, zoals in het onderstaande voorbeeld.
map() en lambda-functie
De functie map neemt twee argumenten: een functie en een sequentie zoals een lijst, en past de functie toe op alle elementen van de sequentie. We kunnen een lambda-functie doorgeven aan map zonder deze zelfs een naam te geven; in dat geval noemen we ze anonieme functies.
In dit voorbeeld gebruiken we map() met de lambda-functie die alle elementen van de lijst kwadrateert, en we slaan het resultaat op in square_all.
nums = [48, 6, 9, 21, 1]
square_all = map(lambda num: num ** 2, nums)
print(square_all)
<map object at 0x103e065c0>
Als je square_all print, zie je dat het een map-object is. Om te zien wat het oplevert, zetten we het om naar een lijst met list en printen we het resultaat.
print(list(square_all))
[2304, 36, 81, 441, 1]
Interactief voorbeeld van het schrijven van een lambda-functie
De onderstaande functie echo_word neemt 2 parameters: een stringwaarde, word1, en een integerwaarde echo. Hij retourneert een string die de concatenatie is van echo kopieën van word1.
Je gaat de bovenstaande eenvoudige functie omzetten in een lambda-functie.
def echo_word(word1, echo):
"""Concatenate echo copies of word1."""
words = word1 * echo
return words
In het volgende voorbeeld ga je:
- Een lambda-functie
echo_worddefiniëren met de variabelenword1enecho. Reproduceer wat de oorspronkelijke functiedefinitie voorecho_word()hierboven doet. echo_word()aanroepen met het stringargument'hey'en de waarde5, in die volgorde. Wijs de aanroep toe aanresult. Print ten slotte de variabeleresult.
# Define echo_word as a lambda function: echo_word
echo_word = (lambda word1, echo: word1 * echo)
# Call echo_word: result
result = echo_word('hey', 5)
# Print result
print(result)
Wanneer we de bovenstaande code uitvoeren, levert dit het volgende resultaat op:
heyheyheyheyhey
Wil je meer leren over lambda-functies? Bekijk dan deze video uit onze cursus Python Data Science Toolbox (Part 1).
Deze content is afkomstig uit DataCamp’s cursus Python Data Science Toolbox (Part 1) van Hugo Bowne-Anderson.
Bekijk ook DataCamp’s Python Functions Tutorial.
