Python 为什么会有这样的警告;预期类型';int';(匹配的泛型类型';#T';),得到';Dict[str,None]';相反,“是吗?”;?

Python 为什么会有这样的警告;预期类型';int';(匹配的泛型类型';#T';),得到';Dict[str,None]';相反,“是吗?”;?,python,pycharm,Python,Pycharm,请仔细观察问题和答案,尤其是因为他们没有回答我的问题 尝试创建一个新的空项目,并添加此代码。它工作正常,没有警告: game_data = {'boats': [], } game_data['boats'].append({'name': None}) 现在将其更改为: game_data = {'boats': [], 'width': None, 'height': None, } game_data['boats'].append({'name': None}) 仍然没有警告。 并再

请仔细观察问题和答案,尤其是因为他们没有回答我的问题

尝试创建一个新的空项目,并添加此代码。它工作正常,没有警告:

game_data = {'boats': [], }
game_data['boats'].append({'name': None})
现在将其更改为:

game_data = {'boats': [], 'width': None, 'height': None, }
game_data['boats'].append({'name': None})
仍然没有警告。 并再次更改为:

w = 12
game_data = {'boats': [], 'width': None, 'height': w, }
game_data['boats'].append({'name': None})
现在您将获得:

Expected type 'int' (matched generic type '_T'), got 'Dict[str, None]' instead
我是唯一有这个的人吗?为什么会这样?有没有办法消除这个警告?

我猜给出这个警告的分析不够清晰

的值类型

game_data = {'boats': [], 'width': None, 'height': None} 
无法确定

您输入的第一个“真实”值是int:

w = 12
game_data = {'boats': [], 'width': None, 'height': w}
所以PyCharm假设这是一个
dict(string->int)

然后将一个内部dict as值添加到空列表中:

game_data['boats'].append({'name': None})
所以现在它有了一个dict(string->int),它突然变得复杂起来,并警告您

这与使用pycharm作为IDE将
int
添加到字符串的
列表中大致相同


至于如何摆脱警告:Jetbrains Resharper是非常可配置的,我想pycharm也会是。本文档可能会帮助您配置降低严重性-如果不是的话,我相信Jetbrains的支持很乐意帮助您解决问题-每当我在使用resharper时都会出现问题。

不是在VS 2017 python 3.6上,不是在pyfiddle.io中,可能是pycharm特性?我同意。我在VisualStudio代码中也没有警告。必须是PyCharm。可能重复的请仔细观察问题和你认为重复的答案,你会改变你的想法。我不是在建议任何事情。我有时会使用VS2017,甚至是pyfiddle.io。我什么都不赞成。使用适合您的任何东西-我只是观察到,对于您发布的相同代码块,我在使用的任一IDE中都没有得到任何警告,因此它们可能依赖于IDE。我将回顾另一篇我认为是重复的帖子,请稍等。我更喜欢在引起警告的行上方添加一个“#noinspection PyTypeChecker”,这让下一位阅读代码的人明白,这是已知的,应该忽略。节省了我的时间,谢谢!您还可以通过添加类似于
game\u data:dict[str,Any]