Python lambda-functies beheersen: praktische voorbeelden & best practices
Lambda-functies, vaak anonieme functies genoemd, laten je kleine, eenmalige routines in één regel schrijven. Ze zijn handig in functionele code, vooral in combinatie met map, filter en reduce.
Wat is een lambda-functie?
Een lambda is een functie gedefinieerd met het sleutelwoord lambda in plaats van def. Het neemt nul of meer parameters en geeft de waarde van één enkele expressie terug. Omdat de body een expressie is, kan een lambda geen statements of meerdere regels bevatten.
Elke lambda heeft drie essentiële onderdelen:
- Het
lambdasleutelwoord. - Eén of meer parameters (gescheiden door komma's).
- Een enkele expressie die de return-waarde produceert.
Bijvoorbeeld: lambda x, y: x + y telt twee getallen op. Hoewel anoniem, kan de lambda aan een variabele worden toegewezen, doorgegeven aan een andere functie, of direct worden aangeroepen.
Hoe een lambda te schrijven
Formele syntaxis:
lambda p1, p2, ... : expressie
Let op het ontbreken van haakjes rond de parameters. De expressie mag elke geldige Python-operatie gebruiken.
Voorbeeld 1: Eenvoudige opteller
opteller = lambda x, y: x + y print(opteller(1, 2)) # → 3
Voorbeeld 2: Een lambda-object inspecteren
tekst = 'een soort nutteloze lambda' print(lambda tekst: print(tekst)) # → <function <lambda> at 0x...>
Hier wordt de lambda nooit aangeroepen; de print toont het functie-object dat de lambda retourneert.
Voorbeeld 3: Direct aangeroepen lambda (IIFE)
(lambda x: print(x))('IIFE in actie') # → IIFE in actie
Door de definitie in haakjes te plaatsen en er haakjes achter te zetten, roep je de lambda direct aan.
Voorbeeld 4: Lambdas vs. reguliere functies
# Reguliere functie
def printer(arg):
return print(arg)
# Lambda die de functie aanroept
guru(lambda: printer('Lambda-aanroep')) # → Lambda-aanroep
Beide snippets produceren dezelfde output, maar de lambda-versie is beknopter wanneer je slechts een eenmalige aanroep nodig hebt.
Lambdas gebruiken met ingebouwde functies
Lambdas schitteren wanneer ze als callbacks worden doorgegeven aan hogere-orde functies. Hieronder veelvoorkomende patronen.
Direct aangeroepen functie-expressie (IIFE) in Python
(lambda x: x + x)(2) # → 4
Filter
De filter-functie houdt elementen die voldoen aan een predicate.
reeksen = [10, 2, 8, 7, 5, 4, 3, 11, 0, 1] gefilterd = filter(lambda x: x > 4, reeksen) print(list(gefilterd)) # → [10, 8, 7, 5, 11]
Map
De map-functie transformeert elk element.
reeksen = [10, 2, 8, 7, 5, 4, 3, 11, 0, 1] gekwadraat = map(lambda x: x * x, reeksen) print(list(gekwadraat)) # → [100, 4, 64, 49, 25, 16, 9, 121, 0, 1]
Reduce
Gebruik reduce om een enkele waarde op te bouwen uit een reeks.
from functools import reduce reeksen = [1, 2, 3, 4, 5] product = reduce(lambda x, y: x * y, reeksen) print(product) # → 120
Wanneer lambdas wel/niet gebruiken
Lambdas zijn ideaal voor beknopte, eenmalige operaties die in één expressie passen. Ze komen veel voor in functionele programmeerconstructies zoals map en filter.
Vermijd echter te complexe lambdas in productiecode. Lange, onleesbare one-liners bemoeilijken onderhoudbaarheid. In dergelijke gevallen is een benoemde functie met een duidelijke docstring te verkiezen.
Lambdas vs. reguliere functies
| Kenmerk | Lambda | Reguliere functie |
|---|---|---|
| Syntaxis | lambda x: x + x | def optellen(x): return x + x |
| Body | Enkelvoudige expressie | Meerdere statements toegestaan |
| Naamgeving | Anoniem (geen identifier) | Moet een naam hebben |
| Return | Impliciet vanuit expressie | Expliciet met return |
| Gebruik | Korte, eenmalige logica | Herbruikbare, complexe logica |
Conclusie
- Gebruik lambdas voor compacte, single-expression functies.
- Kies benoemde functies wanneer de logica complex of herbruikbaar is.
- Houd code leesbaar; eenvoud wint van slimheid.
Python
- C++ Operator Overloading – Praktische Handleiding met Code‑Voorbeelden
- C++ Functies Uitgelegd met Praktische Codevoorbeelden
- Python Functie-argumenten onder de knie krijgen: Positionele, Keyword en Default Parameters
- Python Lambda Functies: Een praktische gids voor anonieme functies
- Python-closures uitgelegd: hoe geneste functies variabelen vangen
- Python print()-functie: Praktische handleiding met voorbeelden
- Python's strip()-methode beheersen: Uitgebreide handleiding & praktische voorbeelden
- Python's str.count() beheersen: Karakters & substrings tellen met voorbeelden
- Python `format()` strings beheersen met duidelijke voorbeelden
- Python's String.find()-methode beheersen: Syntaxis, voorbeelden & alternatieven
- Python abs()-functie: absolute waarden berekenen voor getallen & complexe getallen