Я получаю предупреждения проверки кода от 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)
Наконец, добавление информации Docstring Sphinx, похоже, не влияет на предупреждения. (предупреждение все еще видит "int", когда xdata указывается как str). Кроме того, итерация по y приводит к следующей ошибке:
for y in ydata:
...
>> Expected 'collections.Iterable', got 'int' instead