Sobes.tech
Middle

Hoe begrijp je het referentiemodel waarop de programmeertaal Python is gebaseerd?

sobes.tech AI

Antwoord van AI

In Python zijn variabelen referenties (verwijzingen) naar objecten in het geheugen, niet containers voor de waarden zelf. Wanneer we een waarde aan een variabele toewijzen, begint deze in feite te verwijzen naar een object dat die waarde bevat. Bij het wijzigen van een variabele die verwijst naar een muteerbaar object (bijvoorbeeld een lijst of woordenboek), wordt het object zelf gewijzigd waarop de variabele wijst. Bij het wijzigen van een variabele die verwijst naar een onveranderlijk object (bijvoorbeeld een getal, string of tuple), wordt een nieuw object in het geheugen gemaakt en begint de variabele daar naartoe te verwijzen.

# Onveranderlijk object (int)
a = 10
b = a # a en b verwijzen aanvankelijk naar hetzelfde object
print(id(a), id(b)) # Zelfde id

a = 20 # Maakt een nieuw object 20, a verwijst nu hiernaar
print(id(a), id(b)) # Verschillende ids, b verwijst nog steeds naar 10

# Veranderbaar object (lijst)
list1 = [1, 2, 3]
list2 = list1 # list1 en list2 verwijzen naar dezelfde lijst
print(id(list1), id(list2)) # Zelfde id

list1.append(4) # Wijzigt het object waar beide naar verwijzen
print(list1)
print(list2) # Beide lijsten worden gewijzigd
print(id(list1), id(list2)) # Nog steeds hetzelfde id

Het referentietellingsmechanisme wordt gebruikt voor automatische geheugenbeheer. Elk object houdt het aantal variabelen bij die ernaar verwijzen. Wanneer dit aantal nul bereikt, wordt het object ontoegankelijk en wordt het geheugen vrijgemaakt door de garbage collector.

Een belangrijk verschil met talen die directe opslag van waarden in variabelen gebruiken (bijvoorbeeld C): in Python wordt bij b = a de waarde van a niet gekopieerd naar b, maar b begint te verwijzen naar hetzelfde object als a.