Можно ли (точно) аннотировать тип функции apply в Python?
Нетипизированная функция:
def apply(f, args):
return f(*args)
Я хотел бы написать что-нибудь как
from typing import *
T = TypeVar('T')
S = TypeVar('S')
def apply(f: Callable[T,S], args: Tuple[T]) -> S:
return f(*args)
, но это не работает. mypy
по крайней мере жалуется, что первый аргумент Callable
должен быть списком ...
Два примера использования apply
могут быть:
def add(x: int, y: int) -> int:
return x + y
def negate(x: int) -> int:
return -x
apply(add, (x,y))
apply(negate, (x,))
PS Не так Tuple[T]
не совсем имеет смысла, даже если T
каким-то образом представляет список типов.