Sobes.tech
Middle

Czy parametry w Pythonie są przekazywane przez wartość czy przez referencję?

sobes.tech AI

Odpowiedź od AI

W Pythonie parametry są przekazywane przez odniesienie do obiektu (pass-by-object-reference). Oznacza to, że funkcja otrzymuje odniesienie do obiektu, a nie kopię wartości. Jednak zachowanie zależy od mutowalności obiektu:

  • Dla obiektów mutowalnych (np. listy, słowniki) zmiany wewnątrz funkcji odzwierciedlają się na oryginalnym obiekcie.
  • Dla obiektów niemutowalnych (np. liczby, łańcuchy, krotki) wszelkie próby zmiany obiektu wewnątrz funkcji tworzą nowy obiekt, a oryginał pozostaje bez zmian.

Przykład:

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

Można więc powiedzieć, że parametry są przekazywane przez odniesienie, ale zachowanie jest podobne do przekazywania przez wartość dla obiektów niemutowalnych.