Вывод — False. number является int, но tup — кортеж из одного элемента, поэтому проверка tup на int не проходит.
Манипуляции с кортежами и проверка типов
Вывод — False. number является int, но tup — кортеж из одного элемента, поэтому проверка tup на int не проходит.
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
Условие
Объясните, что происходит в программе: какие значения присваиваются переменным, как формируется кортеж и какой результат вернёт проверка isinstance.
def getValue():
number = 1_999_333
tup = (number,)
print(isinstance(tup, int))
if __name__ == "__main__":
getValue()
- Переменная
numberполучает целочисленное значение1999333(подчеркивания лишь для читаемости). tupсоздаётся как кортеж, содержащий единственный элемент — значениеnumber. Запись(number,)обязательна, иначе скобки воспринимаются как обычные скобки вокруг выражения.- Функция
isinstance(tup, int)проверяет, является ли объектtupэкземпляром классаint. Посколькуtup— кортеж, а не целое число, проверка возвращаетFalse, и именно это значение выводится на экран.
Ответ
Вывод — False. number является int, но tup — кортеж из одного элемента, поэтому проверка tup на int не проходит.
number = 1_999_333
tup = (number,)
assert type(number) is int
assert type(tup) is tuple
assert isinstance(tup[0], int)
Кортеж создаёт запятая, а не сами скобки. Запись tup = (number) сохранила бы число без контейнера. Подчёркивания внутри числового литерала не меняют его значение.
При непосредственном запуске файла условие __name__ == '__main__' истинно, поэтому вызывается функция и печатается False. При обычном импорте определение функции загружается, но этот вызов не выполняется.