Фрагмент корректен и при запуске как основной скрипт печатает False. result_tuple — кортеж из одного числа, а не int; подчёркивания в литерале служат разделителями для читаемости.
Проверка типов и литеральных констант в Python
Фрагмент корректен и при запуске как основной скрипт печатает 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.