Что выведет код Junior Типизация обновлено

Аннотации во время выполнения

Вопрос

Что выведет код? По строке на каждый print.

def add(a: int, b: int) -> int:
    return a + b

print(add('2', '3'))
print(add.__annotations__['return'].__name__)
x: list[int] = ['не число']
print(x)

Попробуйте сами

Напишите, что выведет код: каждый вывод с новой строки.

Показать ответ и разбор

Коротко

Код выведет: 23, int, ['не число']. Python не проверяет аннотации: сложение строк даёт 23, а переменной с аннотацией list[int] можно присвоить список строк.

Что выведет

23
int
['не число']

Разбор

Python не проверяет аннотации: сложение строк даёт 23, а переменной с аннотацией list[int] можно присвоить список строк. Аннотации доступны как данные в __annotations__, и библиотеки вроде Pydantic читают их оттуда.

Ответьте сами, а не прочитайте

В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.