假设我有一个函数,do_something
:
from typing import Sequence, Tuple, Dict
def do_something(argument: Sequence[Tuple[int, str]]):
pass
假设我还有一个字典,D
,它的键完全是 int
,它的值完全是 str
小号:
D: Dict[int, str] = {1: 'a', 2: 'b', 3: 'c'}
在 PyCharm 中,这将以出色的表现通过类型检查器:
do_something(
((1, 'a'), (2, 'b'), (3, 'c'))
)
但是,根据 PyCharm 的说法,尽管它产生的内容相同,但它未能通过类型检查器:
do_something(tuple(D.items()))
这是预期的行为——我在这里遗漏了什么吗? -- 或者这是 PyCharm 类型检查器的错误?
最佳答案
这是 PyCharm 中的错误。 有许多类似的错误,例如this , this , this .
一般来说,PyCharm 在这方面非常聪明。它在您的案例中正确推断出 D
的类型。它还正确地推断出 D.items()
,然后在类似 for k, v in D.items()
、k
和 v
将被正确推断。但是由于一些奇怪的原因,tuple
/list
/sorted
或 D.items()
周围的东西是有问题的。
我总是会在 Youtrack 上报告问题当您期望它应该工作时。
关于python - 在 PyCharm 中类型提示 dict.items() 时的奇怪行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66645909/