Junior
Cum sunt transmise argumentele către o funcție: prin referință sau prin valoare?
sobes.tech AI
Răspuns de la AI
În Python, argumentele nu sunt transmise exact prin referință sau exact prin valoare, ci printr-un mecanism adesea numit "pass by object reference" sau "pass by sharing".
Aceasta înseamnă următoarele:
- Când se transmite un argument către o funcție, se transmite o referință la obiect.
- Dacă obiectul este modificabil (de exemplu, o listă, un dicționar), modificările din interiorul funcției vor fi vizibile în afara acesteia.
- Dacă obiectul este imutabil (de exemplu, un număr, un șir de caractere, un tuplu), atunci la încercarea de a-l modifica în interiorul funcției se va crea un obiect nou, iar obiectul original din afara funcției va rămâne neschimbat.
Obiecte modificabile:
# Obiect modificabil (listă)
def modify_list(items):
items.append(4)
my_list = [1, 2, 3]
modify_list(my_list)
# my_list acum este [1, 2, 3, 4]
Obiecte imutabile:
# Obiect imutabil (număr)
def modify_number(num):
num = num + 1
my_number = 5
modify_number(my_number)
# my_number rămâne 5