Sobes.tech
Junior

Jak jsou argumenty předávány funkci: odkazem nebo hodnotou?

sobes.tech AI

Odpověď od AI

V Pythonu se argumenty nepředávají úplně odkazem ani úplně hodnotou, ale prostřednictvím mechanismu, který se často nazývá "pass by object reference" nebo "pass by sharing".

To znamená následující:

  • Při předání argumentu do funkce se předává odkaz na objekt.
  • Pokud je objekt modifikovatelný (například seznam, slovník), změny uvnitř funkce budou viditelné i mimo ni.
  • Pokud je objekt neměnitelný (například číslo, řetězec, n-tice), při pokusu o jeho změnu uvnitř funkce bude vytvořen nový objekt, a původní objekt mimo funkci zůstane nezměněn.

Modifikovatelné objekty:

# Modifikovatelný objekt (seznam)
def modify_list(items):
    items.append(4)

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

Nemodifikovatelné objekty:

# Nemodifikovatelný objekt (číslo)
def modify_number(num):
    num = num + 1

my_number = 5
modify_number(my_number)
# my_number zůstává 5