PyCharm странное предупреждение типа - PullRequest
3 голосов
/ 28 сентября 2019

Почему следующий код:

v = [None for _ in range(3)]
v[-1] = 0                       <<<

говорит мне об этом?

Неожиданный тип (ы): (int, int) Возможные типы: (int, None) (slice,Итерируемый [Нет]) ...

Ответы [ 2 ]

3 голосов
/ 28 сентября 2019

Простой обходной путь, позволяющий избавиться от такого предупреждения, заключается в добавлении подсказки типа к переменной v:

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

PyCharm будет обрабатывать ее как v: list[Any] и позволит вам присвоить значение любомувведите без предупреждения.

2 голосов
/ 30 сентября 2019

Согласно [Python 3.Docs]: встроенные типы - списки ( выделение мое):

Списки - это изменяемые последовательности, обычно используется для хранения коллекций однородных предметов (где точная степень сходства зависит от приложения).

int и NoneType не считаются однородными (согласно проверкам кода PyCharm ), следовательно, предупреждение.Самый простой способ обойти это, это заполнить список с помощью int s:

v = [0 for _ in range(3)]  # [0] * 3  # Shorter
v[-1] = 0
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...