是否有任何官方的方法,使用Python的类型提示系统,来指示函数返回与其输入相等或相同的值?
我知道类型提示通常与值无关,但对于"函数返回其输入"或"==
到其输入"的特定情况,具有值类型将是有用的。
我希望的是类似于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中不受支持,但我想知道是否为相等/相同返回值的特定情况做出了异常。
像这样:
T = TypeVar('T')
def iden(x: T) -> T:
return x