Junior
Jak przekazywane są argumenty do funkcji: przez referencję czy przez wartość?
sobes.tech AI
Odpowiedź od AI
W Pythonie argumenty nie są przekazywane dokładnie przez referencję ani dokładnie przez wartość, lecz przez mechanizm, który często nazywa się "pass by object reference" lub "pass by sharing".
Oznacza to, co następuje:
- Przy przekazywaniu argumentu do funkcji, przekazywana jest referencja do obiektu.
- Jeśli obiekt jest zmienny (np. lista, słownik), zmiany wewnątrz funkcji będą widoczne na zewnątrz.
- Jeśli obiekt jest niezmienny (np. liczba, łańcuch znaków, krotka), to podczas próby jego zmiany wewnątrz funkcji zostanie utworzony nowy obiekt, a oryginalny obiekt na zewnątrz funkcji pozostanie bez zmian.
Obiekty zmienialne:
# Obiekt zmienialny (lista)
def modify_list(items):
items.append(4)
my_list = [1, 2, 3]
modify_list(my_list)
# my_list teraz to [1, 2, 3, 4]
Obiekty niezmienialne:
# Obiekt niezmienialny (liczba)
def modify_number(num):
num = num + 1
my_number = 5
modify_number(my_number)
# my_number nadal jest 5