ข้อผิดพลาดในการเยื้องใน Python: สาเหตุ วิธีแก้ปัญหา ประโยชน์

เผยแพร่แล้ว: 2021-05-26

ในฐานะที่เป็นภาษาการเขียนโปรแกรมระดับสูงที่ตีความและใช้งานทั่วไป Python ได้รับการยอมรับมากขึ้นเรื่อยๆ ว่าเป็นแพลตฟอร์มที่มีแนวโน้มสูง เป็นผู้นำ และเกิดใหม่มากที่สุดในโลกของการเขียนโปรแกรม Python ไม่มีอะไรเลยหากปราศจากปรัชญาการออกแบบอันชาญฉลาด

ลักษณะสำคัญคือการเน้นถึงการใช้การเยื้องที่มีนัยสำคัญเพื่อเพิ่มความสามารถในการอ่านโค้ด ภาพประกอบที่ไฮไลต์ด้านล่างสรุปแนวป้องกันของปรัชญาการออกแบบของ Python สั้นๆ เป็นคำพังเพย 20 คำ ซึ่งพาดพิงถึงโดย Tim Peters ซึ่งเป็น Pythoneer ระยะยาว ซึ่งท้ายที่สุดก็กลายเป็นหนึ่งในนักพัฒนาหลักที่อุดมสมบูรณ์และเหนียวแน่นที่สุดของ Python

สารบัญ

A Brief Introduction to Python

ก่อนที่เราจะเจาะลึกข้อมูลทางเทคนิคเฉพาะที่เป็นสาเหตุของข้อผิดพลาดในการเยื้องใน Python เราต้องทำความคุ้นเคยกับพื้นฐานของ Python และความจำเป็นในการเยื้อง การทำเช่นนี้ไม่เพียงแต่จะช่วยให้คุณได้รับความซาบซึ้งในข้อผิดพลาดของตัวเองมากขึ้น แต่ยังให้ข้อมูลเชิงลึกเกี่ยวกับข้อดีที่โปรแกรมเมอร์ได้รับจากการเลือกแก้ไขปัญหาอย่างมีประสิทธิภาพ

การเริ่มต้นของ Python ในฐานะภาษาการเขียนโปรแกรมแบบหลายกระบวนทัศน์สามารถสืบย้อนไปถึงปี 1991 ได้ ตั้งแต่นั้นมา โปรแกรมเมอร์ก็ได้ปรับโครงร่างหลักของ Python อย่างต่อเนื่องเพื่อให้เหมาะกับความต้องการเฉพาะของผู้ใช้ที่หลากหลาย เช่น วิทยาศาสตร์ข้อมูล การพัฒนาเว็บและมือถือ

ตอนนี้ เราทุกคนรู้ดีว่าการพยายามทำความเข้าใจลายมือที่อ่านไม่ออกนั้นยากและมักจะทำให้โกรธ ในทำนองเดียวกัน รหัสที่อ่านไม่ได้และไม่มีโครงสร้างนั้นธรรมดาและเรียบง่าย ไม่เป็นที่ยอมรับในโลกของการเขียนโปรแกรม นี่คือจุดที่แนวคิดของ PEP หรือ Python Enhancement Proposal เข้ามาช่วยเหลือโปรแกรมเมอร์ PEP ของชุมชน Python นั้นคล้ายกับ Google Doc ที่ใช้ร่วมกันสำหรับประชาชนทั่วไป

เป็นคำสั่งเชิงพรรณนาที่ได้รับการปรับปรุงอย่างต่อเนื่องเพื่อให้ชุมชนการเขียนโปรแกรม Python รับทราบอย่างทั่วถึงเกี่ยวกับคุณลักษณะและการอัปเดตเพื่อปรับปรุงความสามารถในการอ่านโค้ด โดย Guido van Rossum, Barry Warsaw และ Nick Coghlan ในปี 2544 PEP 8 ถูกเรียกว่ารหัสสไตล์ของ Python

การเยื้องคืออะไร?

เป็นที่ทราบกันดีอยู่แล้วว่า Python เป็นภาษาขั้นตอน ดังนั้น การเยื้องใน Python จึงถูกใช้เพื่อแยกรหัสเอกพจน์ออกเป็นกลุ่มที่สามารถระบุได้ของคำสั่งที่ทำงานคล้ายคลึงกัน ภาษาโปรแกรมส่วนใหญ่ รวมถึง C, C++ และ JAVA ใช้วงเล็บปีกกา {}' เพื่อกำหนดบล็อกโค้ด Python ทำเครื่องหมายส่วนเบี่ยงเบนจากการออกแบบนี้และต้องการใช้การเยื้อง

วากยสัมพันธ์ของการเยื้อง

ตามอนุสัญญาที่ระบุโดยหลักจรรยาบรรณของช่องว่าง PEP 8 การทำซ้ำใหม่ทุกครั้ง (เช่น บล็อกของรหัส) ควรเริ่มต้นด้วยการเยื้อง และการสิ้นสุดของโค้ดควรเป็นบรรทัดแรกที่ไม่มีการเยื้อง แนวทางปฏิบัติทั่วไปในการดำเนินการเยื้องคือช่องว่างสีขาวสี่ช่องหรืออักขระแท็บเดียว โดยพื้นที่ส่วนใหญ่จะต้องการมากกว่าแท็บ

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

ชำระเงิน: 42 หัวข้อและไอเดียโครงการ Python ที่น่าตื่นเต้น

สาเหตุของข้อผิดพลาดในการเยื้องใน Python

'ข้อผิดพลาดในการเยื้อง: คาดว่าจะมีการเยื้องบล็อก' ไม่ได้เลือกปฏิบัติระหว่างผู้ใช้ ไม่ว่าคุณจะเป็นมือใหม่ในการเขียนโปรแกรม Python หรือเป็นนักพัฒนาซอฟต์แวร์ที่มีประสบการณ์ สิ่งนี้จะเกิดขึ้นในบางช่วงเวลา ใน Python เนื่องจากโค้ดทั้งหมดที่คุณพิมพ์ถูกจัดเรียงโดยใช้ช่องว่างที่ถูกต้อง หากมีอินสแตนซ์ใดๆ ในโค้ด คุณมีการเยื้องที่ไม่ถูกต้อง โค้ดโดยรวมไม่ทำงาน และล่ามจะส่งคืนฟังก์ชันข้อผิดพลาด หากต้องการทราบว่าควรจับตามองสิ่งใด ให้แสดงรายการสาเหตุทั่วไปบางประการของข้อผิดพลาดการเยื้องใน Python:

1. การใช้แท็บและพื้นที่พร้อมกันในขณะเข้ารหัส เป็นที่ถกเถียงกันอยู่ว่าในทางทฤษฎี ทั้งแท็บและช่องว่างมีจุดประสงค์เดียวกัน แต่ให้เราพิจารณาสิ่งนี้จากมุมมองของล่าม หากใช้ช่องว่างและแท็บสีขาวไม่สอดคล้องกันและสลับกันได้ จะทำให้เกิดความคลุมเครือ ซึ่งจะส่งผลให้ล่ามสับสนระหว่างการเปลี่ยนแปลงที่จะใช้และในที่สุดก็ส่งคืนข้อผิดพลาดการเยื้องใน Python

2. คุณวางการเยื้องไว้ผิดที่โดยไม่ได้ตั้งใจ หรือไม่มีแท็บหรือช่องว่างสีขาวระหว่างบรรทัดโค้ด เนื่องจาก Python ปฏิบัติตามหลักเกณฑ์ที่เข้มงวดในการจัดเรียงโค้ดที่เป็นลายลักษณ์อักษร การเยื้องในตำแหน่งที่ไม่ถูกต้องจะส่งกลับข้อผิดพลาดอย่างหลีกเลี่ยงไม่ได้ ตัวอย่างเช่น ไม่ควรเยื้องบรรทัดแรกของ Python

3. ในบางครั้ง ขณะสิ้นสุดโปรแกรมที่ค้างชำระและใช้เวลานานเป็นพิเศษ คุณอาจพลาดฟังก์ชันคำสั่งผสมเยื้อง เช่น for, while และ if โดยไม่ได้ตั้งใจ สิ่งนี้จะนำไปสู่ข้อผิดพลาดในการเยื้องอีกครั้ง นี่เป็นความจำเป็นขั้นพื้นฐานที่สุดสำหรับการเยื้องเมื่อใช้ Python และจำเป็นต้องได้รับการฝึกฝนอย่างจริงจังจึงจะเชี่ยวชาญ

4. หากคุณลืมใช้การเยื้องเมื่อทำงานกับฟังก์ชันที่ผู้ใช้กำหนดหรือคลาสอื่น ข้อผิดพลาดมักจะปรากฏขึ้น

จะแก้ไขข้อผิดพลาดการเยื้องใน Python ได้อย่างไร

1. ตรวจสอบช่องว่างหรือแท็บสีขาวที่ไม่ถูกต้อง ขออภัย ไม่มีการแก้ไขข้อผิดพลาดในการเยื้องอย่างรวดเร็ว เนื่องจากรหัสเป็นของคุณ ความจริงก็คือคุณจะต้องประเมินแต่ละบรรทัดเพื่อระบุกรณีที่ผิดพลาดเป็นรายบุคคล อย่างไรก็ตาม เนื่องจากบรรทัดของโค้ดถูกจัดเรียงเป็นบล็อค กระบวนการจึงค่อนข้างง่าย ตัวอย่างเช่น หากคุณใช้คำสั่ง 'if' ในลำดับใดลำดับหนึ่ง คุณสามารถตรวจสอบได้ว่าคุณลืมที่จะเยื้องบรรทัดต่อไปนี้หรือไม่

2. ตรวจสอบให้แน่ใจว่าการเยื้องสำหรับบล็อกหนึ่งๆ ยังคงเหมือนเดิมตลอดทั้งโค้ด แม้ว่าจะมีการแนะนำบล็อกใหม่ตรงกลางก็ตาม ตรวจสอบความไม่สอดคล้องกันในการเยื้อง

หากวิธีแก้ปัญหาแบบแมนนวลข้างต้นไม่ได้ผลสำหรับคุณ และคุณกำลังมีปัญหาในการหาตำแหน่งที่คุณพลาดการเยื้อง ให้ทำตามขั้นตอนเหล่านี้:

3. ไปที่การตั้งค่าตัวแก้ไขโค้ดและเปิดใช้งานตัวเลือกที่ต้องการแสดงแท็บและช่องว่าง เมื่อเปิดใช้งานคุณลักษณะนี้ คุณจะเห็นจุดเล็กๆ จุดเดียว โดยแต่ละจุดแสดงถึงแท็บ/ช่องว่าง หากคุณสังเกตเห็นการดรอปหายไปในจุดที่ไม่ควรอยู่ แสดงว่าบรรทัดนั้นอาจมีข้อผิดพลาดในการเยื้อง

4. ใช้คู่มือการเยื้องในตัวล่าม Python เป็นไปได้ว่าวิธีนี้ไม่มีประสิทธิภาพมากสำหรับโค้ดหลายบรรทัด อย่างไรก็ตาม เนื่องจากจะนำคุณผ่านแต่ละบรรทัดและแสดงให้คุณเห็นว่าข้อผิดพลาดของคุณอยู่ที่ใด จึงเป็นวิธีที่แน่นอนที่สุดในการค้นหาและแก้ไขข้อผิดพลาดทั้งหมด

อ่านเพิ่มเติม: แอปพลิเคชั่น Python 12 อันดับแรกที่น่าสนใจในโลกแห่งความจริง

ประโยชน์ของการเยื้อง

ความสามารถในการอ่านและความสม่ำเสมอเป็นสิ่งสำคัญสำหรับโค้ดที่ดี ตามช่องว่าง PEP 8 จริยธรรมจึงไม่ควรต่อรองได้ มันยืนยันรหัสของคุณอย่างมีเหตุมีผล ซึ่งช่วยให้ได้รับประสบการณ์การเขียนโค้ดที่น่าพึงพอใจยิ่งขึ้น นอกจากนี้ หากคุณปฏิบัติตามหลักเกณฑ์โวหารซึ่งความสามารถในการอ่านเป็นข้อเท็จจริงของคุณ คนที่ไม่รู้จักคุณแต่สนใจงานของคุณจะเข้าใจโค้ดของคุณได้อย่างง่ายดาย

ข้อเสียของการเยื้อง

  • หากโค้ดมีขนาดใหญ่และการเยื้องเสียหาย การแก้ไขข้อผิดพลาดในการเยื้องอาจเป็นเรื่องที่น่าเบื่อหน่าย โดยปกติแล้วจะเป็นการคัดลอกโค้ดจากแหล่งข้อมูลออนไลน์ เอกสาร Word หรือไฟล์ PDF
  • ภาษาโปรแกรมยอดนิยมมักใช้วงเล็บปีกกาเพื่อเยื้อง สำหรับโปรแกรมเมอร์ที่เพิ่งเริ่มใช้ Python การปรับแนวคิดเรื่องการใช้ช่องว่างสำหรับการเยื้องอาจเป็นเรื่องยาก

สรุป

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

ฉันหวังว่าคุณจะได้เรียนรู้มากมายในขณะที่ทำงานในโครงการหลามเหล่านี้ หากคุณอยากรู้เกี่ยวกับการเรียนรู้วิทยาศาสตร์ข้อมูลเพื่อก้าวไปสู่ความก้าวหน้าทางเทคโนโลยีอย่างรวดเร็ว ลองดู Executive PG Program ของ upGrad & IIIT-B ใน Data Science และเพิ่มทักษะให้กับตัวเองเพื่ออนาคต

ฉันจะได้รับข้อผิดพลาดใดเนื่องจากการเยื้องใน Python

Python กำหนดเมื่อบล็อกโค้ดเริ่มต้นและหยุดโดยดูที่ช่องว่างที่จุดเริ่มต้นของบรรทัด คุณอาจพบข้อผิดพลาดในการเยื้องต่อไปนี้:
1. การเยื้องที่ไม่คาดคิด - โค้ดบรรทัดนี้มีช่องว่างที่จุดเริ่มต้นมากกว่าช่องก่อนหน้า แต่โค้ดก่อนหน้าจะไม่เริ่มบล็อกย่อย ในบล็อก โค้ดทุกบรรทัดต้องขึ้นต้นด้วยสตริงช่องว่างเดียวกัน
2. Unindent ไม่สอดคล้องกับระดับการเยื้องภายนอกใดๆ - โค้ดบรรทัดนี้มีช่องว่างที่จุดเริ่มต้นน้อยกว่าช่วงก่อนหน้า แต่ก็ไม่ตรงกับบล็อกอื่นๆ
3. คาดว่าจะมีการเยื้องบล็อก - โค้ดบรรทัดนี้เริ่มต้นด้วยจำนวนช่องว่างเท่าเดิม แต่บรรทัดก่อนหน้าควรจะเริ่มต้นการบล็อก (เช่น if/while/for statement, function definition)

คุณจะแก้ไขแท็บและช่องว่างที่ไม่สอดคล้องกันในการเยื้อง Spyder ได้อย่างไร

แท็บและช่องว่างเป็นอักขระสองตัวที่แยกจากกันซึ่งปรากฏบนหน้าจอเป็นช่องว่าง ปัญหาคือไม่มีความเห็นเป็นเอกฉันท์ว่าอักขระแท็บควรมีขนาดใหญ่เพียงใด ดังนั้นบรรณาธิการบางคนจึงระบุว่าใช้พื้นที่ 8 ช่อง อื่นๆ เป็น 4 ช่อง และส่วนอื่นๆ เป็น 2 ช่อง และยังปรับแต่งได้
เมื่อคุณเขียนโค้ดแต่บรรทัดหนึ่งถูกเยื้องด้วยแท็บและอีกบรรทัดหนึ่งมีช่องว่าง Python จะแสดงข้อผิดพลาด แม้ว่าจะดูเหมือนดีในตัวแก้ไข (แต่จะดูไม่ดีถ้าคุณเพิ่มความกว้างของแท็บเป็นสองเท่า ตอนนี้) บรรทัดแท็บจะถูกเยื้องสองระดับ)
เพื่อหลีกเลี่ยงปัญหานี้ ไปที่ตัวเลือกของโปรแกรมแก้ไขข้อความและเปิดใช้งานคุณลักษณะ แปลงแท็บเป็นช่องว่าง ซึ่งจะแทนที่อักขระแท็บด้วยอักขระช่องว่าง n โดยที่ n คือความกว้างของแท็บที่โปรแกรมแก้ไขของคุณใช้

คุณแสดงการเยื้องบน Spyder อย่างไร

เลือกรหัสของคุณแล้วกด Tab หรือ Shift + Tab เพื่อเยื้องหรือยกเลิกการเยื้อง เครื่องมืออื่นๆ สำหรับการแก้ไขโค้ดของคุณมีอยู่ในส่วนแก้ไข