Python Academy · Les

Functies als first-classobjecten

U leert closures en het doorgeven van functies als argumenten begrijpen.

Les 1 van 414 stappen

Functies als first-classobjecten is een gratis Python Academy-les op CoddyKit. Dit is les 1 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.

Inleiding

In Python zijn functies eersteklasobjecten: je kunt ze als argumenten doorgeven, retourneren en in gegevensstructuren opslaan.

Functies zijn objecten

def double(x): return x*2 maakt een functieobject. double is gewoon een naam. Je kunt die naam toewijzen: fn = double; fn(5) werkt.
def double(x): return x * 2
fn = double
print(fn(5))
print(type(fn))

Functies als argumenten doorgeven

def apply(func, val): return func(val) — func is een aanroepbaar argument. Dit is programmeren met functies van hogere orde.
def apply(func, val): return func(val)
print(apply(abs, -7))
print(apply(str, 42))

Functies in containers opslaan

ops = [add, sub, mul] slaat functieobjecten op in een lijst. Itereer erover en roep ze aan: for op in ops: op(a, b).
ops = [str.upper, str.lower, str.strip]
for op in ops:
    print(op('  Hello  '))

Functies retourneren

Een functie kan een andere functie retourneren. def make_adder(n): def adder(x): return x+n; return adder
def make_adder(n):
    def adder(x): return x + n
    return adder
add10 = make_adder(10)
print(add10(5), add10(20))

Closures

Een closure legt variabelen uit het omsluitende bereik vast. De innerlijke functie sluit n in make_adder in.
def counter(start=0):
    count = [start]
    def inc():
        count[0] += 1
        return count[0]
    return inc
c = counter()
print(c(), c(), c())

Lambda als anonieme functie

lambda x: x*2 is een anonieme functie met één expressie. Dit is handig voor korte callbacks, maar geef de functie een naam als de logica niet eenvoudig is.
nums = [3, 1, 4, 1, 5]
print(sorted(nums, key=lambda x: -x))

map() en filter()

map(func, iterable) past func toe op elk element. filter(pred, iterable) behoudt de elementen waarvoor pred True is.
nums = [1, 2, 3, 4, 5]
print(list(map(lambda x: x**2, nums)))
print(list(filter(lambda x: x%2==0, nums)))

functools.reduce()

reduce(func, seq) vouwt een reeks samen: reduce(lambda a,b: a+b, [1,2,3,4]) geeft 10.
from functools import reduce
print(reduce(lambda a,b: a*b, [1,2,3,4,5]))

Controle op aanroepbaarheid

callable(obj) retourneert True als obj kan worden aangeroepen. Functies, klassen en objecten met __call__ zijn aanroepbaar.
print(callable(print))
print(callable(42))
class C:
    def __call__(self): pass
print(callable(C()))

Functie-introspectie

func.__name__, func.__doc__, func.__annotations__, inspect.signature(func) geven metagegevens over de functie.
import inspect
def greet(name: str) -> str:
    '''Returns a greeting.'''
    return f'Hi {name}'
print(greet.__name__, greet.__annotations__)
print(inspect.signature(greet))

Snelle controle

Wat is een closure in Python?

Samenvatting

Functies zijn eersteklasobjecten. Geef ze door als argumenten, retourneer ze vanuit functies en sla ze op in containers. Closures leggen het omsluitende bereik vast. Gebruik lambda voor eenvoudige functies op één regel.

Ga door

Uitstekende voortgang! Ga door om het volgende concept onder de knie te krijgen.
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 “Functies als first-classobjecten” gratis?

Ja — de volledige tekst van “Functies als first-classobjecten” 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 “Functies als first-classobjecten”?

U leert closures en het doorgeven van functies als argumenten begrijpen. 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 1 van 4.

Hoe lang duurt de les “Functies als first-classobjecten”?

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-classobjecten
  2. Aangepaste decorators schrijven
  3. De decorator @property
  4. @classmethod en @staticmethod
← Terug naar Python Academy