Sobes.tech
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