Первый function() вызовет AttributeError: у tuple нет append, и дальнейшие строки без обработки ошибки не выполнятся. Присваивание obj_t[0] отдельно даст TypeError.
def function(test_list: tuple = ()):
Первый function() вызовет AttributeError: у tuple нет append, и дальнейшие строки без обработки ошибки не выполнятся. Присваивание obj_t[0] отдельно даст TypeError.
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
Условие
def function(test_list: tuple = ()): test_list.append(1) print(test_list)
test_list = ()
function() # function(test_list) # function() # print(test_list) #
##################
obj_t = (1, [1.0], "1")
obj_t[0] = 2 # obj_t[1].append(2) # print(obj_t) #
Ответ
Первый function() вызовет AttributeError: у tuple нет append, и дальнейшие строки без обработки ошибки не выполнятся. Присваивание obj_t[0] отдельно даст TypeError.
Если рассматривать операции независимо, изменение списка внутри кортежа допустимо:
obj_t = (1, [1.0], '1')
obj_t[1].append(2)
print(obj_t) # (1, [1.0, 2], '1')
Неизменяемость кортежа запрещает заменять его элементы, но не делает вложенный список неизменяемым. Аннотация tuple не меняет поведение методов и не выполняет runtime-преобразование аргумента.