您如何键入提示可能是多种类型之一的函数参数?

How do you type hint a function parameter that could be one of several types?

我正在向某些 python 2 代码添加类型提示,但遇到了一个小难题。当 return 可能是几种类型之一时,如何提示函数的 return 类型?

我正在使用一个看起来像...

的函数
def foo(param):
    # do stuff
    return dict_

其中 param 是一个字符串,dict_ 是一个字典,其键始终是字符串,值可以是整数或字符串。

我的解决方案是如下所示键入提示函数,但想检查这是否是正确的策略。

def foo(param):
    # type: (str) -> Dict[str, object]
    # do stuff
    return dict_

您想要联合(也称为求和类型)Union[str,int] 而不是更通用的 object:

def foo(param):
    # type: (str) -> Dict[str,Union[str,int]]
    # ...
    return dict_

使用 object,您声明字典的值可以是任意类型。 Union[str,int] 表示它可能是 int;或者它可以是 str;但它不能是 float,或 list,或另一个 dict,或除 intstr.

以外的任何内容