Vin*_* W. 14 python iterator numpy pycharm
我从PyCharm收到代码检查警告.我理解逻辑,但我不清楚修复它的适当方法.假设我有以下示例函数:
def get_ydata(xdata):
ydata = xdata ** 2
for i in range(len(ydata)):
print ydata[i]
return ydata
Run Code Online (Sandbox Code Playgroud)
我得到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)
Run Code Online (Sandbox Code Playgroud)
该函数的目的当然是解析一个numpy数组的xdata.但PyCharm不知道,所以没有任何进一步的指示假设xdata(因此也是ydata)是一个整数.
解决此警告的适当方法是什么?我应该注意,添加类型检查行将修复警告.这是最佳解决方案吗?例如:
if not type(ydata) is np.ndarray:
ydata = np.array(ydata)
Run Code Online (Sandbox Code Playgroud)
最后,添加Sphinx文档字符串信息似乎对警告没有任何影响.(当xdata指定为str时,警告仍会看到'int').同时迭代y直接导致以下错误:
for y in ydata:
...
>> Expected 'collections.Iterable', got 'int' instead
Run Code Online (Sandbox Code Playgroud)
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
Run Code Online (Sandbox Code Playgroud)
最新的python版本还包括对类型注释的支持
import numpy as np
def get_ydata(xdata: np.ndarray):
...
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
11550 次 |
| 最近记录: |