在PyCharm中键入问题

时间:2016-12-14 13:40:34

标签: python python-3.x pycharm typing type-hinting

我有以下功能:

def clock(dimS: Tuple[int] =(0)) -> Generator[Tuple[int], None, None]:
    """ Produce coordinates """
    itr = 0
    dim = len(dimS)
    maxItr = np.prod(dimS)

    if (dim < 1):
        raise ValueError(
            'function clock expected positive number of dimensions, received: 0'
        )

    while itr < maxItr:
        c = []
        ind = itr

        # build coordinate
        for i in range(dim):
            s = dimS[dim - i - 1]
            g = ind % s
            ind //= s       # update
            c.append(g)

        itr += 1
        yield tuple(reversed(c))

我使用PyCharm编辑我的代码(喜欢它)。它告诉我Generator[Tuple[int], None, None]类型是预期的,而是got no return?当我将其更改为Generator[Tuple[int], None, bool]并添加一行return True时,如同the documentation示例一样,IDE会突出显示True并告诉我Expected Generator[Tuple[int], None, bool], got bool。我该如何解决这个问题?

这是一个更简单的例子,可以做同样的事情:

from typing import Generator

def foo(i: int =0) -> Generator[int, None, None]:
    while True:
        i += 1
        yield i

它突出显示Generator[int, None, None]并告诉我got no return

1 个答案:

答案 0 :(得分:2)

mypy毫无疑问地接受您的示例输入。这是PyCharm的一个问题。

通过JetBrains的错误跟踪器,我发现了一个问题,处理了您遇到的问题,请参阅Return type hint messes up with 'Generator' type