Partiële functies
Gebruik functools.partial
Partiële functies is een gratis Python Academy-les op CoddyKit. Dit is les 4 van 4. Je kunt de volledige les hieronder gratis lezen en daarna in de browser praktisch oefenen met een ingebouwde code-editor en een AI-begeleider die 24/7 beschikbaar is. Deze les maakt deel uit van het leertraject Python Academy. Je voortgang wordt gesynchroniseerd op het web en in de CoddyKit-app. De cursus Python Academy bevat in totaal 4 lessen.
Wat is een partial?
functools.partial maakt een nieuwe functie waarin enkele argumenten van een bestaande functie al zijn ingevuld. Het is alsof je argumenten vooraf invult, zodat je het resultaat met minder argumenten kunt aanroepen.
Importeer deze met from functools import partial.
from functools import partial
def power(base, exp):
return base ** exp
square = partial(power, exp=2)
print(square(5))Positionele argumenten vastleggen
Positionele argumenten die aan partial worden doorgegeven, vullen de parameters van de functie van links naar rechts. De overige argumenten geef je door wanneer je de partial aanroept.
from functools import partial
def multiply(a, b):
return a * b
double = partial(multiply, 2)
print(double(10))
print(double(50))Benoemde argumenten vastleggen
Benoemde argumenten die je aan partial meegeeft, worden standaardwaarden die je tijdens het aanroepen nog kunt overschrijven.
from functools import partial
def greet(name, greeting='Hello'):
return greeting + ', ' + name
hola = partial(greet, greeting='Hola')
print(hola('Ada'))
print(hola('Bob', greeting='Hey'))Partials met ingebouwde functies
Je kunt ook partiële functies maken van ingebouwde functies. Hier maken we van int een parser voor gehele getallen in grondtal 2.
from functools import partial
binary = partial(int, base=2)
print(binary('1010'))
print(binary('1111'))Schonere callbacks
Partials zijn ideaal voor callbacks waarbij je een functie zonder argumenten of met één argument moet doorgeven, maar vooraf context wilt invullen.
from functools import partial
def log(level, message):
return '[' + level + '] ' + message
error = partial(log, 'ERROR')
print(error('disk full'))Partials in map
Een partial past goed in functies van hogere orde zoals map: één argument ligt vast, terwijl het andere per element varieert.
from functools import partial
def add(a, b):
return a + b
add10 = partial(add, 10)
print(list(map(add10, [1, 2, 3])))Een partial inspecteren
Een partial-object stelt de ingepakte functie beschikbaar via .func, de vaste positionele argumenten via .args en de vaste benoemde argumenten via .keywords.
from functools import partial
def f(a, b, c):
return (a, b, c)
p = partial(f, 1, c=3)
print(p.func.__name__)
print(p.args)
print(p.keywords)Partials stapelen
Je kunt een partial maken op basis van een andere partial en stap voor stap meer argumenten vastleggen.
from functools import partial
def volume(l, w, h):
return l * w * h
base = partial(volume, 2)
slab = partial(base, 3)
print(slab(4))Partial versus lambda
Een lambda kan hetzelfde doen, maar partial is vaak duidelijker voor het vastleggen van argumenten en maakt de ingepakte functie beschikbaar voor introspectie.
from functools import partial
def power(base, exp):
return base ** exp
cube_p = partial(power, exp=3)
cube_l = lambda b: power(b, 3)
print(cube_p(2), cube_l(2))Een echt voorbeeld: afronden
Maak een afrondfunctie op twee decimalen door de ingebouwde functie round gedeeltelijk in te vullen.
from functools import partial
round2 = partial(round, ndigits=2)
print(round2(3.14159))
print(round2(2.71828))partialmethod voor klassen
De verwante functools.partialmethod doet hetzelfde voor methoden binnen een klassendefinitie en vult argumenten van een methode vooraf in.
from functools import partialmethod
class Light:
def set(self, state):
self.state = state
return state
on = partialmethod(set, True)
off = partialmethod(set, False)
l = Light()
print(l.on())
print(l.off())Korte controle
Wat doet functools.partial?
Samenvatting: partiële functies
Je hebt geleerd dat functools.partial:
- een nieuwe functie maakt met vooraf ingevulde argumenten (positioneel of benoemd);
- je de vooraf ingestelde benoemde standaardwaarden tijdens het aanroepen kunt laten overschrijven;
- ideaal is voor callbacks,
mapen het verminderen van herhaling; .func,.argsen.keywordsbeschikbaar maakt en een methodevariant heeft met de naampartialmethod.
from functools import partial
add = lambda a, b: a + b
plus1 = partial(add, 1)
print(plus1(41))Leer Python met een AI-tutor — gratis
Schrijf echte code en voer die uit in je browser, krijg direct hulp van een AI-tutor die 24/7 beschikbaar is en ga verder waar je gebleven bent op het web of in de app.
- Cursussen
- 76
- Lessen
- 320
Veelgestelde vragen
Is de les “Partiële functies” gratis?
Ja — de volledige tekst van “Partiële functies” kun je hier gratis op het web lezen. Als je interactief wilt oefenen met een ingebouwde code-editor en een AI-begeleider die 24/7 beschikbaar is, en de rest van de cursus Python Academy wilt ontgrendelen, kun je upgraden naar CoddyKit PRO. De cursus Python Academy bevat in totaal 4 lessen.
Wat leer ik in “Partiële functies”?
Gebruik functools.partial Je oefent met Python Academy door code rechtstreeks in de browser uit te voeren. Een AI-begeleider die 24/7 beschikbaar is beantwoordt je vragen terwijl je de les doorwerkt.
Heb ik ervaring nodig om met Python Academy te beginnen?
Ervaring vooraf is niet nodig. Python Academy op CoddyKit is opgebouwd voor beginners tot gevorderden, zodat je hier of bij het begin kunt starten en in je eigen tempo kunt leren. Dit is les 4 van 4.
Hoe lang duurt de les “Partiële functies”?
De meeste lessen van CoddyKit duren ongeveer 5–10 minuten. Elke les is kort en interactief, zodat je gestaag vooruitgaat en op het web en in de app precies verdergaat waar je was gebleven.
Kan ik code schrijven en uitvoeren in deze les over Python Academy?
Ja. Elke les over Python Academy bevat een ingebouwde code-editor, zodat je rechtstreeks in je browser echte code kunt schrijven en uitvoeren en direct feedback van AI krijgt — lokale installatie is niet nodig.
Alle lessen in deze cursus
- Functies als first-class objects
- Closures en vrije variabelen
- nonlocal en veranderlijke status
- Partiële functies