В процессе использования 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.
Добавить комментарий