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
Така може да се каже, че параметрите се предават по препратка, но поведението е подобно на предаване по стойност за неизменяеми обекти.