Sobes.tech
Junior

Ako sa argumenty odovzdávajú funkcii: odkazom alebo hodnotou?

sobes.tech AI

Odpoveď od AI

V Pythone argumenty nie sú odovzdávané úplne referenciou ani úplne hodnotou, ale prostredníctvom mechanizmu, ktorý sa často nazýva "pass by object reference" alebo "pass by sharing".

To znamená nasledovné:

  • Pri odovzdávaní argumentu do funkcie sa odovzdáva referencia na objekt.
  • Ak je objekt zmeniteľný (napríklad zoznam, slovník), zmeny vo vnútri funkcie budú viditeľné aj zvonku.
  • Ak je objekt nezmeniteľný (napríklad číslo, reťazec, n-tica), pri pokuse o jeho zmenu vo vnútri funkcie sa vytvorí nový objekt, a pôvodný objekt mimo funkcie zostane nezmenený.

Zmeniteľné objekty:

# Zmeniteľný objekt (zoznam)
def modify_list(items):
    items.append(4)

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

Nezmeniteľné objekty:

# Nezmeniteľný objekt (číslo)
def modify_number(num):
    num = num + 1

my_number = 5
modify_number(my_number)
# my_number zostáva 5