🐍 Python  ·  20 вопросов  ·  ~50 мин  ·  ⏱ Таймер 50:00  ·  Средний  · 

Аннотации типов

Проверяет типы коллекций, объединения, протоколы, обобщения и пределы статической проверки. Чтобы пройти его уверенно, мало узнать знакомую запись — нужно восстановить ход программы и обосновать выбор во всех четырёх направлениях. Все задания рассчитаны на CPython 3.12; отличия других реализаций или версий учитываются только там, где это прямо оговорено.

Отвечено: 0 из 20
⏱ --:--
0%
💡 Инструкция: Версия: CPython 3.12. Выберите один ответ из четырёх. На 20 вопросов отведено не меньше 40 минут; код лучше читать построчно. После завершения вы увидите общий процент, четыре тематические шкалы и объяснение каждого ответа.
Вопрос 1 из 20
Функция аннотирована как принимающая и возвращающая `int`, но вызывается со строкой. Что напечатает CPython 3.12?
Python
def add(x:int,y:int)->int: return x+y
print(add("a","b"))
Вопрос 2 из 20
Что означает `int | None`?
Вопрос 3 из 20
Нужно спроектировать контракт поведения без обязательного наследования от общего класса. Какой инструмент аннотаций выбрать?
Вопрос 4 из 20
Что сохраняет TypeVar?
Вопрос 5 из 20
Как аннотировать словарь строковых ключей и списков целых значений?
Вопрос 6 из 20
Проследите определение переменной и функции. Какое точное содержимое окажется в `f.__annotations__`?
Python
x:int=1
def f(a:str)->bool: return bool(a)
print(f.__annotations__)
Вопрос 7 из 20
Когда Literal полезен?
Вопрос 8 из 20
Проверка `isinstance(obj, P)` падает, потому что `P` — обычный `Protocol`. Какое исправление разрешит такую проверку во время выполнения?
Вопрос 9 из 20
Почему `Any` не равен `object` для статического анализа?
Вопрос 10 из 20
Что означает аннотация `Callable[[str, int], bool]`?
Вопрос 11 из 20
Как выразить словарь с фиксированными строковыми полями разного типа?
Вопрос 12 из 20
`NewType` применяется к числу 5. Какие значение и реальный тип напечатает фрагмент?
Python
from typing import NewType
UserId=NewType("UserId",int)
x=UserId(5)
print(x, type(x).__name__)
Вопрос 13 из 20
Для чего `TypeGuard`?
Вопрос 14 из 20
В `isinstance` передают параметризованный тип `list[int]`. Чем закончится этот граничный сценарий?
Вопрос 15 из 20
Почему аннотация `list[object]` не всегда подходит вместо `list[str]`?
Вопрос 16 из 20
Метод базового класса возвращает `Self`, а вызывается у экземпляра подкласса. Как статический анализатор трактует тип результата?
Вопрос 17 из 20
Когда стоит запускать статический анализатор в проекте?
Вопрос 18 из 20
Разработчик ожидает, что `cast(int, "5")` преобразует строку в число. В чём ошибка ожидания и какие значение с реальным типом напечатает код?
Python
from typing import cast
x=cast(int,"5")
print(x, type(x).__name__)
Вопрос 19 из 20
Как описать объект, который можно закрыть методом close, не требуя общего предка?
Вопрос 20 из 20
Что значит `NoReturn`/`Never` у функции?

Ответьте на все 20 вопросов, чтобы получить результат

🔗 Встроить тест на свой сайт (iframe) ▼

Скопируйте код и вставьте в любое место на вашем сайте:

Также доступна прямая ссылка на embed-страницу