Python Academy · Les

Partiële functies

Gebruik functools.partial

Les 4 van 413 stappen

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, map en het verminderen van herhaling;
  • .func, .args en .keywords beschikbaar maakt en een methodevariant heeft met de naam partialmethod.
from functools import partial
add = lambda a, b: a + b
plus1 = partial(add, 1)
print(plus1(41))
Gratis beginnen

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

  1. Functies als first-class objects
  2. Closures en vrije variabelen
  3. nonlocal en veranderlijke status
  4. Partiële functies
← Terug naar Python Academy