Sobes.tech
Middle

Předávají se parametry v Pythonu hodnotou nebo odkazem?

sobes.tech AI

Odpověď od AI

V Pythonu jsou parametry předávány odkazem na objekt (pass-by-object-reference). To znamená, že funkce obdrží odkaz na objekt, nikoliv kopii hodnoty. Chování však závisí na tom, zda je objekt změnitelný:

  • U změnitelných objektů (například seznamy, slovníky) se změny uvnitř funkce odrážejí na původním objektu.
  • U neměnitelných objektů (například čísla, řetězce, n-tice) jakákoli snaha změnit objekt uvnitř funkce vytvoří nový objekt, původní zůstává nezměněn.

Pří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

Lze říci, že parametry jsou předávány odkazem, ale chování je podobné předání hodnotou u neměnitelných objektů.