Вебинары Разобраться в IT Реферальная программа
Программирование Аналитика Дизайн Маркетинг
07 Июл 2023
2 мин
603

Указание типа функции в подсказках типов Python

В процессе использования Python, особенно для новичков, часто возникает необходимость использования подсказок типов для улучшения читаемости и поддержки

В процессе использования Python, особенно для новичков, часто возникает необходимость использования подсказок типов для улучшения читаемости и поддержки кода. Однако, когда дело доходит до указания типа функции, могут возникнуть сложности. В модуле typing нет типа Function, а в соответствующем Python Enhancement Proposal (PEP), PEP 483, информации по этой теме не находится.

Рассмотрим типичную задачу. Предположим, есть функция, которая принимает другую функцию в качестве аргумента:

def apply_func(func, x):
    return func(x)

В этом случае может возникнуть необходимость указать, что func должен быть функцией. В Python для этого можно использовать подсказки типов.

Тип Callable

Для указания типа функции в подсказках типов в Python используется тип Callable из модуля typing. Этот тип принимает два параметра: список типов аргументов функции и тип возвращаемого значения.

from typing import Callable

def apply_func(func: Callable[[int], float], x: int) -> float:
    return func(x)

В этом примере func ожидается быть функцией, которая принимает один аргумент типа int и возвращает значение типа float.

Если функция принимает несколько аргументов, их типы перечисляются в списке. Если функция не возвращает значение (возвращает None), вторым параметром Callable указывается None.

from typing import Callable, Any, None

def apply_func(func: Callable[[int, Any], None], x: int, y: Any) -> None:
    return func(x, y)

В этом примере func ожидается быть функцией, которая принимает два аргумента (один типа int и один любого типа) и не возвращает значение.

Таким образом, с помощью типа Callable из модуля typing можно указывать тип функции в подсказках типов в Python.

Тест на профориентацию
За 10 минут узнайте, как ваш опыт пригодиться в IT индустрии
Подробнее
Тест на профориентацию

Добавить комментарий