Python использует механизм, называемый передачей по ссылке на объект (также известный как передача по присваиванию). Это означает, что функции получают ссылку на объект, а не копию самой переменной.
Когда ты передаёшь неизменяемый объект, поведение похоже на передачу по значению:
def modify(x):
x = 10 # creates a new object, original is untouched
value = 5
modify(value)
print(value) # Output: 5
Когда ты передаёшь изменяемый объект, поведение похоже на передачу по ссылке:
def modify(lst):
lst.append(99) # modifies the original object
items = [1, 2, 3]
modify(items)
print(items) # Output: [1, 2, 3, 99]
Всё сводится к тому, можно ли изменить объект на месте:
Даже с изменяемыми типами переприсваивание параметра новому объекту внутри функции не влияет на исходный — только операции на месте вроде append() или прямое присваивание по индексу.
Механизм передачи Python по ссылке на объект означает, что переприсваивание неизменяемого параметра внутри функции изменит исходную переменную в области вызывающего кода.
Новый — ещё не проверен сообществом
Вы