您如何键入提示可能是多种类型之一的函数参数?
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
,或除 int
或 str
.
以外的任何内容
我正在向某些 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
,或除 int
或 str
.