我有以下功能:
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
。
答案 0 :(得分:2)
mypy
毫无疑问地接受您的示例输入。这是PyCharm的一个问题。
通过JetBrains的错误跟踪器,我发现了一个问题,处理了您遇到的问题,请参阅Return type hint messes up with 'Generator' type。