【问题标题】:How do you type hint a function parameter that could be one of several types?如何键入提示可能是几种类型之一的函数参数?
【发布时间】:2019-09-01 06:40:58
【问题描述】:

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

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

def foo(param):
    # do stuff
    return dict_

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

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

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

【问题讨论】:

    标签: python type-hinting


    【解决方案1】:

    您想要一个联合(也称为 sum 类型)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 以外的任何东西。

    【讨论】:

    • 我从未见过像这样用于类型提示的单行 cmets。
    • 这是 Python 2 的 suggested style,它没有函数注释。
    猜你喜欢
    • 1970-01-01
    • 2020-05-30
    • 1970-01-01
    • 1970-01-01
    • 2018-10-26
    • 2022-08-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多