ste*_*esu 12 python numpy pylint
我只是将以下“最小”重现案例放在一起(最少用引号引起来,因为我想确保pylint不会抛出其他错误、警告、提示或建议——这意味着有一些样板文件):
pylint_error.py :
"""
Docstring
"""
import numpy as np
def main():
"""
Main entrypoint
"""
test = np.array([1])
print(test.shape[0])
if __name__ == "__main__":
main()
Run Code Online (Sandbox Code Playgroud)
当我运行pylint此代码 ( pylint pylint_error.py) 时,我得到以下输出:
$> pylint pylint_error.py
************* Module pylint_error
pylint_error.py:13:10: E1136: Value 'test.shape' is unsubscriptable (unsubscriptable-object)
------------------------------------------------------------------
Your code has been rated at 1.67/10 (previous run: 1.67/10, +0.00)
Run Code Online (Sandbox Code Playgroud)
它声称它test.shape是不可下标的,即使它很明显是。当我运行代码时,它工作得很好:
$> python pylint_error.py
1
Run Code Online (Sandbox Code Playgroud)
那么是什么导致pylint了困惑,我该如何解决呢?
一些补充说明:
np.arange(1)在错误消失时声明测试np.zeros(1),np.zeros((1)),np.ones(1),或np.ones((1))错误也不会消失np.full((1), 1)在错误消失时声明测试test: np.ndarray = np.array([1]))并没有修复错误dtype( np.array([1], dtype=np.uint8))不能修复错误test[:].shape) 使错误消失我的第一直觉是,各种NumPY方法(arangevs zerosvsfull等)的不一致行为表明它只是NumPY. 但是NumPY,我可能误解了一些潜在的概念。我想确定我不是在编写具有未定义行为的代码,这些行为只会在偶然情况下起作用。
我没有足够的声誉来发表评论,但看起来这是一个悬而未决的问题:https : //github.com/PyCQA/pylint/issues/3139
在他们最终解决问题之前,我只会将行更改为
print(test.shape[0]) # pylint: disable=E1136 # pylint/issues/3139
Run Code Online (Sandbox Code Playgroud)
到我的pylintrc文件。
| 归档时间: |
|
| 查看次数: |
8549 次 |
| 最近记录: |