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