2.42. สรุป

คุณได้ศึกษาส่วนต่างๆ ของ Python ที่พบบ่อยเมื่อเขียนสคริปต์สำหรับ OpenMV Cam:

  • พื้นฐานของภาษา -- ค่าและตัวแปร เลขคณิตและการเปรียบเทียบ สตริงและไบต์ คอลเลกชันหลักสี่ประเภท (list, tuple, dict, set) เงื่อนไขและลูป การนิยามฟังก์ชันและการจัดการอาร์กิวเมนต์และขอบเขต การนิยามคลาสและการใช้การสืบทอด การเรียกและการจัดการข้อยกเว้น สิ่งเหล่านี้คือพื้นฐานที่ทุกส่วนอื่นของ Python สร้างขึ้นจาก

  • ส่วนโครงสร้าง -- การแยกโค้ดเป็นโมดูลและแพ็กเกจ การนำเข้าสิ่งที่ต้องการ การอ่านและเขียนไฟล์ด้วย with การแลกเปลี่ยนข้อมูลที่มีโครงสร้างผ่าน json และการแพ็กเรคอร์ดไบนารีผ่าน struct พร้อม endianness และฟิลด์จำนวนเต็มความกว้างคงที่ สิ่งเหล่านี้ปรากฏขึ้นทันทีที่สคริปต์เติบโตเกินไฟล์เดียวหรือต้องสื่อสารกับสิ่งภายนอก

  • ส่วนที่เปลี่ยนรูปแบบบนรันไทม์ที่มีข้อจำกัด -- ทำไม MicroPython floats จึงเป็น 32 บิตและวิธีการเปรียบเทียบอย่างน่าเชื่อถือ วิธีที่ garbage collector จัดสรรและคืนบล็อก ทำไม fragmentation จึงสำคัญบน heap ขนาดเล็ก และวิธีการจัดสรรล่วงหน้าทำให้สคริปต์ที่ทำงานนานทำงานได้ดี นิสัยจาก desktop บางอย่างอาจทำให้เข้าใจผิดที่นี่ เนื้อหานี้ให้โมเดลทางจิตที่ถูกต้องสำหรับโค้ดที่ทำงานบนอุปกรณ์

  • เครื่องมือ introspection และโค้ดแบบไดนามิก -- id(), hash(), isinstance(), issubclass(), callable(), globals(), locals() สำหรับการดู ค่า และสภาพแวดล้อม; eval() / exec() / compile() สำหรับกรณีที่หายากที่การสร้างโค้ดในขณะรันเป็นคำตอบที่ถูกต้อง สคริปต์ส่วนใหญ่ไม่เคยใช้สิ่งเหล่านี้ แต่การรู้ว่ามีอยู่ (และเมื่อไรไม่ควรใช้) เป็นส่วนหนึ่งของการอ่านโค้ด Python ของผู้อื่น

  • การจับคู่รูปแบบในข้อความ -- โมดูล re สำหรับสตริงที่รูปแบบสามารถอธิบายได้แต่ไม่สามารถระบุครบทุกกรณีได้ คลาสอักขระ ตัวหาปริมาณ กลุ่มจับภาพ anchor และการแลกเปลี่ยนระหว่าง greedy และ lazy พร้อมกับจุดที่ subset ของ MicroPython หยุดสั้นกว่า CPython ใช้เมื่อ str.find หรือ str.split ไม่เพียงพออีกต่อไป

  • คอลเลกชันที่เกินกว่าฟังก์ชันในตัว -- collections.namedtuple() สำหรับเรคอร์ดที่มีประเภท collections.deque สำหรับ ring buffer ที่มีขอบเขตและ rolling window collections.OrderedDict เมื่อลำดับการแทรกเป็นส่วนหนึ่งของความเท่าเทียม และ heapq สำหรับคำถาม "อะไรเล็กที่สุด" หรือ "อะไรเร่งด่วนที่สุด" ที่สร้างบนลิสต์ธรรมดา แต่ละอย่างเติมช่องว่างที่คอลเลกชันหลักสี่ประเภทไม่ครอบคลุม

  • เครื่องมือการทำงานประจำวัน -- comprehensions สำหรับสร้างคอลเลกชันจากคอลเลกชันที่มีอยู่ generator และ iterator protocol สำหรับประมวลผลข้อมูลแบบ lazy decorator และ context manager สำหรับการห่อรูปแบบ acquire/release และ before/after ที่พบบ่อย และนิสัยการดีบัก (การอ่าน traceback, repr(), dir(), help(), โมดูล logging) ที่เปลี่ยนสคริปต์ที่เสียให้กลายเป็นสคริปต์ที่ทำงานได้

2.42.1. การใช้บทนำนี้ในภายหลัง

ปฏิบัติกับบทนำนี้เป็นสื่ออ้างอิง ไม่ใช่การอ่านครั้งเดียว บทต่างๆ สั้นโดยตั้งใจ การกลับมาทบทวน slicing หรือ context manager หรือ comprehensions คือการใช้งานที่ตั้งใจไว้ บุ๊กมาร์กส่วนที่คุณใช้บ่อยที่สุด

หากในภายหลังเอกสารของกล้องอ้างถึงแนวคิด Python ที่คุณไม่รู้จัก -- เช่น "สิ่งนี้คืนค่า context manager" หรือ "วนซ้ำผลลัพธ์" -- หน้า primer ที่เกี่ยวข้องคือจุดเริ่มต้น

2.42.2. ขั้นตอนต่อไป

การควบคุมฮาร์ดแวร์พื้นฐาน สร้างโดยตรงบน Python ที่คุณรู้แล้ว ในขณะที่ primer อยู่ในหน่วยความจำ การควบคุมฮาร์ดแวร์อยู่ในโลกทางกายภาพ -- แรงดันไฟบนพิน พัลส์บนสาย ไบต์ที่ clock ผ่านบัสไปยังชิปอื่น ชุดเครื่องมือเปลี่ยนเป็นโมดูล machine และชั้น electronics บางๆ ทุกอย่างจาก primer ยังคงใช้ได้ต่อไป คุณจะไม่ต้องเรียนรู้ def หรือ with หรือความแตกต่างระหว่าง bytearray กับ bytes ใหม่

เมื่อคุณพบลักษณะของ Python ที่รู้สึกไม่คุ้นเคยในเนื้อหาฮาร์ดแวร์ บทนำนี้คือที่ที่ควรกลับมา