Выбор ответа Junior Функции и области видимости спрашивают часто обновлено
Как передаются аргументы в функцию Python
Вопрос
Что выведет print(nums)?
def touch(lst):
lst.append(4)
lst = [0]
nums = [1, 2, 3]
touch(nums)
print(nums)
Попробуйте сами
Выберите вариант, и откроется разбор.
Показать ответ и разбор
Коротко
Правильный ответ: [1, 2, 3, 4]. Функция получает ссылку на тот же список, поэтому append(4) меняет общий объект.
Варианты ответа
[1, 2, 3, 4]правильный ответ[0], имя перепривязано[1, 2, 3], передана копия[0, 4]
Разбор
Функция получает ссылку на тот же список, поэтому append(4) меняет общий объект. Затем lst = [0] лишь перепривязывает локальное имя, и nums вызывающего это не затрагивает. Итог [1, 2, 3, 4]. Это и называют передачей ссылки на объект (call by sharing): не копия и не ссылка на переменную.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.