有没有人知道如何为类型提示编写联合?
我正在做以下事情,但PyCharm没有认出它:
def add(a, b)
# type: (Union[int,float,bool], Union[int,float,bool]) -> Union([int,float,bool])
return a + b
为联合指定类型提示的正确方法是什么?
我正在使用python 2.7。
答案 0 :(得分:2)
有many ways来指定类型提示的联合。
在Python 2和3中,您可以使用以下内容:
def add(a, b):
"""
:type a: int | float | bool
:type b: int | float | bool
:rtype: int | float | bool
"""
return a + b
在Python 3.5中引入了typing
模块,因此您可以使用以下方法之一:
from typing import Union
def add(a, b):
# type: (Union[int, float, bool], Union[int, float, bool]) -> Union[int, float, bool]
return a + b
或
from typing import Union
def add(a, b):
"""
:type a: Union[int, float, bool]
:type b: Union[int, float, bool]
:rtype: Union[int, float, bool]
"""
return a + b
或
from typing import Union
def add(a: Union[int, float, bool], b: Union[int, float, bool]) -> Union[int, float, bool]:
return a + b
答案 1 :(得分:1)
在Pycharm(版本2016.2.2)中为我做以下工作:
from typing import Union
def test(a, b):
# type: (Union[int, float, bool], Union[int, float, bool]) -> Union[int, float, bool]
return a + b
Pycharm可能会混淆,因为你的返回类型中有额外的parens,或者可能是因为你忘了从Union
模块导入typing
。