🔖 Справочник команд и синтаксиса

⚡ Краткий справочник

  • isinstance(obj, (int, float)) — проверка типа.
  • raise TypeError("msg") — возбудить исключение.
  • try/except TypeError as e: — обработка исключения.
  • Рекурсия: базовый случай + рекурсивный вызов.
  • f"{prefix}.{key}" — сборка составного ключа.
  • dict.get("key", default) — безопасное чтение из словаря.

isinstance

КонструкцияОписаниеПример
isinstance(x, int)Проверка одного типаisinstance(5, int)True
isinstance(x, (int, float))Проверка нескольких типовisinstance(3.14, (int, float))True
isinstance(x, list)Проверка спискаisinstance([], list)True
isinstance(x, dict)Проверка словаряisinstance({}, dict)True

Рекурсия

ЭлементНазначениеПример
Базовый случайОстановка рекурсииif not numbers: return 0
Рекурсивный шагВызов себя с меньшими даннымиreturn numbers[0] + recursive_sum(numbers[1:])
Глубина стекаЛимит вызовов PythonПревышение → RecursionError

Исключения

ИсключениеКогда возникаетКогда использовать
TypeErrorНеверный тип аргументаВалидация типов через isinstance
ValueErrorНекорректное значениеЗначение верного типа, но не подходит по смыслу
RecursionErrorПереполнение стекаСлишком глубокая рекурсия

raise

КонструкцияОписаниеПример
raise TypeError("msg")Возбудить исключениеПроверка типа аргумента
raiseПовторно возбудить текущее исключениеВ блоке except после логирования

Паттерны валидации

def validate_list_of_numbers(items: list) -> None:
    if not isinstance(items, list):
        raise TypeError("Expected a list")
    for item in items:
        if not isinstance(item, (int, float)):
            raise TypeError(f"Expected numbers, got {type(item).__name__}")


def validate_department(department: dict) -> None:
    if not isinstance(department, dict):
        raise TypeError("Department must be a dict")
    sub_departments = department.get("sub_departments")
    if sub_departments is not None and not isinstance(sub_departments, list):
        raise TypeError("sub_departments must be a list")
⚠️ Проверить по документации: вспомогательные функции валидации и type hints не разбираются в исходном практикуме, но являются стандартным подходом в современном Python.