Как в Python указать типы для аргументов функции и возвращаемого значения?

«Как в Python указать типы для аргументов функции и возвращаемого значения?» — вопрос из категории Python, который задают на 10% собеседований Python Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

В Python для указания типов используются аннотации типов (type hints), введенные в PEP 484. Они добавляют информацию о типах, но не влияют на исполнение кода, так как Python остается языком с динамической типизацией.

Основное назначение:

  • Статический анализ: Инструменты, такие как mypy, могут проверить код на наличие ошибок типизации до его запуска.
  • Подсказки в IDE: Редакторы кода используют аннотации для автодополнения и навигации.
  • Читаемость: Код становится более понятным и самодокументируемым.

Синтаксис:

Тип аргумента указывается через двоеточие (:) после его имени, а тип возвращаемого значения — через стрелку (->) перед двоеточием функции.

# name должен быть строкой, age - целым числом
# Функция должна вернуть строку
def get_user_info(name: str, age: int) -> str:
    return f"Пользователь: {name}, возраст: {age}"

# Пример использования
user_data = get_user_info("Alice", 30)
print(user_data)

Ключевые особенности:

  • Нет принудительной проверки: Python не выдаст ошибку, если вы передадите в функцию аргумент неверного типа. Проверка типов — задача внешних инструментов.
  • Модуль typing: Для сложных типов (списки, словари, опциональные значения) используются специальные конструкции из модуля typing.

    from typing import List, Optional
    
    def process_ids(user_ids: List[int]) -> Optional[str]:
        if not user_ids:
            return None
        return f"Обработано ID: {', '.join(map(str, user_ids))}"