#ВопросСподвохом — ответ от нашего ментора по Python🐍
Создан будет один массив. И создан он будет при первом вызове функции, так как является параметром по умолчанию для этой функции
Это происходит потому, что для неизменяемых (immutable) типов данных в функцию передаётся значение, а для изменяемых (mutable) — ссылка.
И после этого получается, что при первой инициализации массива он становится «привязанным» к функции modfiy_or_create_array. Также стоит учитывать, что при присвоении переменной значения другой изменяемой переменной присваивается не содержание объекта, а ссылка на него. Проверить это можно следующим способом:
Создан будет один массив. И создан он будет при первом вызове функции, так как является параметром по умолчанию для этой функции
Это происходит потому, что для неизменяемых (immutable) типов данных в функцию передаётся значение, а для изменяемых (mutable) — ссылка.
И после этого получается, что при первой инициализации массива он становится «привязанным» к функции modfiy_or_create_array. Также стоит учитывать, что при присвоении переменной значения другой изменяемой переменной присваивается не содержание объекта, а ссылка на него. Проверить это можно следующим способом:
print(
all((array is array2,
array2 is array3,
array3 is array))
) # True
Подробнее: https://stackoverflow.com/questions/1132941/least-astonishment-and-the-mutable-default-argument