Проверка типа значения через кортежный литерал

Функция выводит False: large_num — int, а pair — одноэлементный tuple. Запятая в (large_num,) определяет создание кортежа.

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

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

Функция выводит False: large_num — int, а pair — одноэлементный tuple. Запятая в (large_num,) определяет создание кортежа.

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

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

Условие

Разберите, что делает функция print_type, насколько корректна запись, какие типы данных формируются, и какой вывод появится при её запуске.

def print_type():
    large_num = 1_999_333
    pair = (large_num,)
    print(isinstance(pair, int))

if __name__ == "__main__":
    print_type()

Ответ

Функция выводит False: large_num — int, а pair — одноэлементный tuple. Запятая в (large_num,) определяет создание кортежа.

Число 1_999_333 эквивалентно 1999333: подчёркивания служат разделителями для читаемости. Выражение (large_num,) оборачивает число в кортеж, поэтому проверка самого контейнера как int ложна.

isinstance(pair, tuple)  # True
isinstance(pair[0], int)  # True

Если убрать запятую и оставить (large_num), получится просто число и исходная проверка вернёт True. Условие if __name__ == '__main__' вызывает функцию при непосредственном запуске файла, но не при обычном импорте. Код синтаксически корректен и исключения в показанном сценарии не вызывает.

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

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

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

Подробнее