如何键入在Python中返回其参数的变量函数

2024-04-28 15:43:09 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试创建一个可以用作注释的函数(稍后检查函数并使用预期的返回值执行操作…)

def WillReturn(*kwargs):
    # dark magic
    return kwargs

问题是:我如何注释WillReturn,使类型提示给出以下警告

def MyFunction(a, b, c) -> WillReturn(int=1, str='yo'):
    return (123, 
            1.2,  # error! expects a str at position #1
            None) # error! expects two values

想法1:

这可以做到这一点,但不具有很强的可扩展性:

A,B,C,D,E,F = map(typing.TypeVar, 'ABCDEF')
@typing.overload
def WillReturn(A) -> A: ...
@typing.overload
def WillReturn(A,B) -> (A,B): ...
@typing.overload
def WillReturn(A,B,C) -> (A,B,C): ...

# and so on and so forth

想法2:

Tuple中的子类,或者直接使用_VariadicGenericAlias,但我不完全确定这两个对象的预期用途


Tags: and函数typingreturnsodefmagicerror