Sobes.tech
Junior

Kako se argumenti prosleđuju funkciji: po referenci ili po vrednosti?

sobes.tech АИ

Одговор од АИ

U Python-u argumenti se ne prosleđuju tačno putem referenci ili tačno putem vrednosti, već putem mehanizma koji se često naziva "pass by object reference" ili "pass by sharing".

Ovo znači sledeće:

  • Kada se argument prosledi funkciji, prosleđuje se referenca na objekat.
  • Ako je objekat promenljiv (npr. lista, rečnik), promene unutar funkcije će biti vidljive i izvan nje.
  • Ako je objekat nepromenljiv (npr. broj, string, tuple), pokušaj njegove izmene unutar funkcije će kreirati novi objekat, a originalni objekat izvan funkcije će ostati nepromenjen.

Promenljivi objekti:

# Promenljiv objekat (lista)
def modify_list(items):
    items.append(4)

my_list = [1, 2, 3]
modify_list(my_list)
# my_list sada je [1, 2, 3, 4]

Nepromenljivi objekti:

# Nepromenljiv objekat (broj)
def modify_number(num):
    num = num + 1

my_number = 5
modify_number(my_number)
# my_number ostaje 5