Sobes.tech
Middle

Sú parametre v Pythone odovzdávané hodnotou alebo odkazom?

sobes.tech AI

Odpoveď od AI

V Pythone sa parametre odovzdávajú pomocou odkazu na objekt (pass-by-object-reference). To znamená, že funkcia dostane odkaz na objekt, nie kópiu hodnoty. Avšak správanie závisí od zmeniteľnosti objektu:

  • Pre zmeniteľné objekty (napríklad zoznamy, slovníky) sa zmeny vo vnútri funkcie odrážajú na pôvodnom objekte.
  • Pre nezmeniteľné objekty (napríklad čísla, reťazce, n-tice) akýkoľvek pokus o zmenu objektu vo vnútri funkcie vytvorí nový objekt, pôvod zostáva nezmenený.

Príklad:

def modify_list(lst):
    lst.append(4)

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


def modify_int(x):
    x += 1

num = 5
modify_int(num)
print(num)  # 5

Takže, možno povedať, že parametre sa odovzdávajú pomocou odkazu, ale správanie je podobné odovzdávaniu hodnotou pre nezmeniteľné objekty.