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

问题描述 投票:0回答:1

有没有任何官方方法,使用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 中不受支持,但我想知道对于相等/相同返回值的特定情况是否有例外。

python identity type-hinting python-typing
1个回答
0
投票

像这样:

T = TypeVar('T')

def iden(x: T) -> T:
    return x
© www.soinside.com 2019 - 2024. All rights reserved.