Предупреждение PyCharm getitem для функций с массивами
Я получаю предупреждения о проверке кода от PyCharm. Я понимаю логику,но я не совсем понимаю, как ее исправить. Скажем, у меня есть следующий пример функции:
def get_ydata(xdata):
ydata = xdata ** 2
for i in range(len(ydata)):
print ydata[i]
return ydata
Я получаю 2 предупреждения:
>> Expected type 'Sized', got 'int' instead (at line 3)
>> Class 'int' does not define '__getitem__', so the '[]' operator cannot be used on its instances (at line 4)
целью функции, конечно, является анализ массива numpy xdata. Но PyCharm этого не знает, поэтому без каких-либо дополнительных указаний предполагает, что xdata (и, следовательно, ydata) является целым числом.
что соответствующее способ решения этого предупреждения? Я должен отметить, что добавление строки проверки типа исправит предупреждение. Это оптимальное решение? Например:
if not type(ydata) is np.ndarray:
ydata = np.array(ydata)
наконец, добавление информации о Sphinx docstring не оказывает никакого влияния на предупреждения. (предупреждение по-прежнему видит "int", когда xdata указан как str). Также итерация по y напрямую приводит к следующей ошибке:
for y in ydata:
...
>> Expected 'collections.Iterable', got 'int' instead
1 ответов
Pycharm имеет тип намекая функции, которые могут быть использованы.
например, в этом случае следующий код устраняет ошибки:
import numpy as np
def get_ydata(xdata):
ydata = xdata ** 2 # type: np.ndarray
for i in range(len(ydata)):
print(ydata[i])
return ydata