Я знаю, что подсказки типов обычно не имеют значения с значениями, но было бы полезно иметь типизацию значений для конкретного случая, когда "функция возвращает входные данные или что-то в этом роде ==".
Я надеюсь на что-то вроде TypeVar, но который также содержит информацию о сигнатуре аннотированной функции (с хотя бы некоторой официальной поддержкой, например, PyCharm/MyPy/и т. д.), примерно так:
Идентификация:
Код: Выделить всё
from typing import Identity
# Identity[0] indicates "returns the positional argument at index 0".
# Identity['foo'] would indicate "returns the kwarg named 'foo'".
def foo(arg1, arg2) -> Identity[0]:
return arg1
foo(object()) # Passes type checking
foo(1) # Fails type checking, as "is" identity won't work on all ints
Код: Выделить всё
from typing import Equivalent
def foo(arg1: int) -> Equivalent[0]:
return (arg1 - 1) + 1
Код: Выделить всё
Equivalent
Существует ли такое? Если нет, возможно ли это или ошибочно?
Что я пробовал
Код: Выделить всё
TypeVar
Я понимаю, что системы типов, ограничивающие значения, сложны и не поддерживаются в Python , но мне интересно, было ли сделано исключение для конкретного случая равных/идентичных возвращаемых значений.
Подробнее здесь: https://stackoverflow.com/questions/718 ... an-equival