python - 在 PyCharm 中类型提示 dict.items() 时的奇怪行为

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

假设我有一个函数,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()kv 将被正确推断。但是由于一些奇怪的原因,tuple/list/sortedD.items() 周围的东西是有问题的。

我总是会在 Youtrack 上报告问题当您期望它应该工作时。

关于python - 在 PyCharm 中类型提示 dict.items() 时的奇怪行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66645909/

相关文章:

python - Pyglet Player.seek() 函数不工作?

python - 预期类型 'MyObject',在带有类型提示的 __init__ 中得到 'None'

python - Django 不加载静态文件 (Pycharm)

python - 无法在 mac os 上为 python 3.6 pip 安装 GDAL

python - 在 Python 中查找依赖项的来源?

python - 如何在键盘记录程序中将输出合并到单行中?

python - 找到 3 个字母的单词

regex - 查找最里面的大括号中以给定子字符串的单词开头的文本

python - PyCharm 是否有 Python 解释器项目设置的快捷方式?

python - 如何将模块员工中的按钮创建/编辑隐藏到属于员工/员工组的员工?