PyCharm怪异类型警告

时间:2019-09-28 10:18:12

标签: python pycharm

为什么要执行以下代码:

nans

告诉我这个吗?

意外的类型: (int,int) 可能的类型: (int,无) (切片,可迭代[无]) ...

2 个答案:

答案 0 :(得分:4)

摆脱这种警告的一种简单的解决方法是在v变量上添加类型提示:

v: list = [None for i in range(3)]
v[-1] = 0

PyCharm将其视为v: list[Any],并允许您分配任何类型的值而不会发出警告。

答案 1 :(得分:3)

根据[Python 3.Docs]: Built-in Types - Lists强调是我的):

  

列表是可变序列,通常用于存储同类项目的集合(精确的相似程度会因应用程序而异)。

int NoneType 被认为是同质的(通过 PyCharm 的代码检查),因此发出警告。解决这个问题的最简单方法是在列表中添加 int s:

v = [0 for _ in range(3)]  # [0] * 3  # Shorter
v[-1] = 0

作为替代方案,您可以将元组用作异构项容器(如@Jeyekomon所指出的),但请记住,元组是不可变的(一旦创建,就不能更改)