Sobes.tech
Middle

Дават ли се параметри в Python по стойност или по препратка?

sobes.tech AI

Отговор от AI

В Python параметрите се предават чрез препратка към обекта (pass-by-object-reference). Това означава, че функцията получава препратка към обекта, а не копие на стойността. Въпреки това, поведението зависи от изменяемостта на обекта:

  • За изменяеми обекти (например списъци, речници) промените вътре във функцията се отразяват върху оригиналния обект.
  • За неизменяеми обекти (например числа, низове, кортежи) всяка опит за промяна на обекта вътре във функцията създава нов обект, като оригиналът остава непроменен.

Пример:

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

Така може да се каже, че параметрите се предават по препратка, но поведението е подобно на предаване по стойност за неизменяеми обекти.