ฉันเพิ่งรวบรวมกรณีการทำซ้ำ "ขั้นต่ำ" ต่อไปนี้ (ขั้นต่ำในเครื่องหมายคำพูดเพราะฉันต้องการให้แน่ใจว่าจะ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()
เมื่อฉันใช้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)
มันอ้างว่าtest.shapeไม่สามารถถอดได้แม้ว่ามันจะค่อนข้างชัดเจนก็ตาม เมื่อฉันเรียกใช้รหัสมันใช้ได้ดี:
$> python pylint_error.py
1
ดังนั้นสิ่งที่ทำให้เกิด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 zerosVS fullฯลฯ ) NumPYแสดงให้เห็นว่ามันเป็นเพียงข้อผิดพลาดใน อย่างไรก็ตามเป็นไปได้มีแนวคิดพื้นฐานบางอย่างNumPYที่ฉันเข้าใจผิด ฉันต้องการให้แน่ใจว่าฉันไม่ได้เขียนโค้ดที่มีพฤติกรรมที่ไม่ได้กำหนดซึ่งจะทำงานเฉพาะกับอุบัติเหตุ
pylintก่อนnumpy