在Pycharm中,如何为类型提示指定联合?

时间:2016-09-05 16:38:22

标签: pycharm type-hinting

有没有人知道如何为类型提示编写联合?

我正在做以下事情,但PyCharm没有认出它:

def add(a, b)
    # type: (Union[int,float,bool], Union[int,float,bool]) -> Union([int,float,bool])
    return a + b

为联合指定类型提示的正确方法是什么?

我正在使用python 2.7。

2 个答案:

答案 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