Проверка типов и литеральных констант в Python

Фрагмент корректен и при запуске как основной скрипт печатает False. result_tuple — кортеж из одного числа, а не int; подчёркивания в литерале служат разделителями для читаемости.

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

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

Фрагмент корректен и при запуске как основной скрипт печатает False. result_tuple — кортеж из одного числа, а не int; подчёркивания в литерале служат разделителями для читаемости.

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

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

Условие

Опишите, будет ли выполнен представленный фрагмент, какие конструкции языка задействованы, и существуют ли ошибки в объявлении переменных либо в проверке типов.


def check_type():
    num = 1_999_333
    result_tuple = (num,)
    print(isinstance(result_tuple, int))

if __name__ == "__main__":
    check_type()

Ответ

Фрагмент корректен и при запуске как основной скрипт печатает False. result_tuple — кортеж из одного числа, а не int; подчёркивания в литерале служат разделителями для читаемости.

num получает целое 1999333. Запятая в (num,) создаёт одноэлементный tuple. isinstance проверяет тип всего result_tuple, не его содержимого.

isinstance(result_tuple, int)     # False
isinstance(result_tuple[0], int)  # True

Условие name == 'main' вызывает check_type только при непосредственном запуске модуля. При обычном импорте функция определяется, но этот блок не выполняется. Числовые литералы с подчёркиваниями поддерживаются начиная с Python 3.6.

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

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

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

Подробнее