Как передаются аргументы в функцию в Python (по ссылке или по значению)?

В Python аргументы передаются по ссылке на объект, но поведение зависит от изменяемости объекта:

Короткий ответ

Что ответить на собеседовании

В Python аргументы передаются по ссылке на объект, но поведение зависит от изменяемости объекта:

Подробный разбор

Ответ с пояснениями

В Python аргументы передаются по ссылке на объект, но поведение зависит от изменяемости объекта:

  • Для неизменяемых типов (int, str, tuple) при изменении аргумента внутри функции создается новый объект, исходный не меняется.
  • Для изменяемых типов (list, dict, set) изменения внутри функции влияют на исходный объект.

Это значит, что если передать изменяемый объект и изменить его внутри функции, изменения будут видны снаружи. Для неизменяемых объектов изменения внутри функции не повлияют на внешний объект.

Пример:

def add_item(lst):
    lst.append(4)

my_list = [1, 2, 3]
add_item(my_list)
print(my_list)  # Выведет [1, 2, 3, 4]


def increment(n):
    n += 1

num = 5
increment(num)
print(num)  # Выведет 5

ИИ-помощник для собеседований

Хочешь уверенно проходить собеседования?

Попробуй ИИ-помощник для собеседований: слышит вас и собеседника, анализирует экран, подсказывает ответы в реальном времени, работает без VPN и не попадает в захват экрана.

Подробнее