Sobes.tech
Junior

Hoe worden argumenten aan een functie doorgegeven: per referentie of per waarde?

sobes.tech AI

Antwoord van AI

In Python worden argumenten niet precies per referentie of per waarde doorgegeven, maar via een mechanisme dat vaak "pass by object reference" of "pass by sharing" wordt genoemd.

Dit betekent het volgende:

  • Bij het doorgeven van een argument aan een functie wordt een referentie naar het object doorgegeven.
  • Als het object wijzigbaar is (bijvoorbeeld een lijst, woordenboek), dan zijn wijzigingen binnen de functie zichtbaar buiten de functie.
  • Als het object niet wijzigbaar is (bijvoorbeeld een getal, string, tuple), wordt er bij poging tot wijziging binnen de functie een nieuw object gemaakt, en blijft het oorspronkelijke object buiten de functie ongewijzigd.

Wijzigbare objecten:

# Wijzigbaar object (lijst)
def modify_list(items):
    items.append(4)

my_list = [1, 2, 3]
modify_list(my_list)
# my_list is nu [1, 2, 3, 4]

Onwijzigbare objecten:

# Onwijzigbaar object (nummer)
def modify_number(num):
    num = num + 1

my_number = 5
modify_number(my_number)
# my_number blijft 5