Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Python

การตรวจจับการเยื้องคลุมกำหนดใน Python

การเยื้อง (Indentation) เป็นคุณสมบัติสำคัญของไวยากรณ์ Python บล็อกโค้ดในฟังก์ชัน คลาส หรือลูป ต้องปฏิบัติตามระดับการเยื้องเดียวกันสำหรับคำสั่งภายใน โมดูล tabnanny ในไลบรารีมาตรฐานของ Python สามารถตรวจจับการละเมิดข้อกำหนดนี้ได้

โมดูลนี้มีจุดประสงค์หลักเพื่อใช้ในโหมดบรรทัดคำสั่งด้วยสวิตช์ -m อย่างไรก็ตาม ก็สามารถนำเข้าในเซสชันอินเตอร์พรีเตอร์ได้เช่นกัน

การใช้งานบรรทัดคำสั่ง

python -m tabnanny -q example.py

สำหรับเอาต์พุตแบบละเอียด ใช้สวิตช์ -v

python -m tabnanny -v example.py

ฟังก์ชันต่อไปนี้ถูกกำหนดในโมดูล tabnanny สำหรับตรวจสอบการเยื้องทางโปรแกรม:

check()

ฟังก์ชันนี้ตรวจสอบบรรทัดที่เยื้องคลุมกำหนดในไฟล์ที่กำหนด สามารถส่งไดเรกทอรีเป็นพารามิเตอร์ได้ ไฟล์ทั้งหมดในนั้นจะถูกตรวจสอบแบบเรียกซ้ำ

ตัวอย่าง

import tabnanny
tabnanny.check('example.py')

tabnanny.verbose - แฟล็กนี้ระบุว่าจะพิมพ์ข้อความแบบละเอียดหรือไม่ เพิ่มขึ้นโดยตัวเลือก -v หากเรียกเป็นสคริปต์

tabnanny.filename_only - แฟล็กนี้ระบุว่าจะพิมพ์เฉพาะชื่อไฟล์ที่มีปัญหาเกี่ยวกับ whitespace หรือไม่ ตั้งค่าเป็น true โดยตัวเลือก -q หากเรียกเป็นสคริปต์

process_tokens()

ฟังก์ชันนี้ถูกใช้โดย check() เพื่อประมวลผลโทเค็นที่สร้างโดยโมดูล tokenize ฟังก์ชันนี้ยกเว้น NannyNag exception หากตรวจพบการเยื้องคลุมกำหนด ถูกจับและจัดการใน check()