使用Python类型提示,我如何指示函数返回与其输入相等或相同的值?



是否有任何官方的方法,使用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

最新更新