Lỗi thụt lề trong Python là gì

Python là một ngôn ngữ lập trình mới nổi được phát hành lần đầu tiên vào năm 1991. Ngôn ngữ này được biết đến với thư viện toàn diện lớn và hỗ trợ một số mô hình lập trình như chức năng, mệnh lệnh, thủ tục và hướng đối tượng

Lỗi thụt lề trong Python là gì
Lỗi thụt lề trong Python

'Lỗi thụt lề. Dự kiến ​​​​một khối thụt lề 'xảy ra đối với tất cả các loại người dùng; . Vì Python sắp xếp tất cả mã của nó theo các khoảng trắng chính xác, nên nếu bạn thụt lề sai, mã sẽ không biên dịch được và bạn sẽ nhận được thông báo lỗi

Theo các quy ước tuân theo trong PEP8, cần có bốn khoảng trắng khi được yêu cầu. Đó là lý tưởng cho mọi lập trình viên sử dụng thụt đầu dòng thích hợp để cải thiện khả năng đọc mã

Điều gì gây ra lỗi thụt lề trong Python?

Như đã đề cập trước đây, lỗi này chủ yếu xảy ra do có lỗi khoảng trắng hoặc tab trong mã của bạn. Vì Python sử dụng ngôn ngữ thủ tục, bạn có thể gặp lỗi này nếu bạn không đặt các tab/dấu cách chính xác. Chương trình có thể chạy bình thường nhưng nếu trình thông dịch tìm thấy lỗi này, thông báo lỗi sẽ xuất hiện ở giữa. Một số nguyên nhân gây ra lỗi là

  • Bạn đang sử dụng cả dấu cách và tab trong mã của mình. Nếu cả hai được sử dụng thay thế cho nhau, trình thông dịch sẽ không thể xác định mục nào sẽ được sử dụng
  • Bạn đã đặt một số thụt lề sai. Nếu không tuân thủ thực hành thụt đầu dòng, bạn sẽ mắc phải lỗi này chắc chắn
  • Bạn quên thụt lề các câu lệnh ghép như 'if', 'for', 'while', v.v.
  • Bạn quên thụt lề các hàm hoặc lớp do người dùng định nghĩa

Giải pháp 1. Kiểm tra các khoảng trắng/tab sai

Không có sửa chữa ngay lập tức cho vấn đề này. Vì code là của bạn nên bạn phải xem từng dòng xem mình sai ở đâu. Có một số khối trong mã liên quan đến cấu trúc. Nếu có một câu lệnh 'Nếu', thì cần phải có một đoạn mã thụt vào sau câu lệnh đó

Lỗi thụt lề trong Python là gì
Cấu trúc khối trực quan thụt đầu dòng

Kiểm tra sơ đồ trên. Đảm bảo rằng phần thụt đầu dòng cho một khối cụ thể vẫn giữ nguyên trong toàn bộ mã ngay cả khi một khối mới được thêm vào ở giữa. Đảm bảo rằng vết lõm của bạn nhất quán. Nếu bạn đang sử dụng dấu cách, hãy luôn sử dụng dấu cách và nếu bạn đang sử dụng dấu tab, hãy luôn sử dụng dấu tab. Việc trộn lẫn hai sẽ gây ra vấn đề

Lỗi thụt lề trong Python là gì
Ví dụ về thụt lề

Thụt đầu dòng chính xác được hiển thị trong ví dụ trên. Xem vòng lặp 'for' để bắt đầu. Mọi thứ bên trong vòng lặp 'for' phải được thụt vào. Bên trong vòng lặp 'for', chúng ta có câu lệnh 'if'. Bên trong câu lệnh 'if', mọi thứ phải được thụt vào thêm

Bạn có thể dễ dàng kiểm tra nơi xảy ra lỗi thụt đầu dòng bằng cách kiểm tra nhật ký lỗi và xem dòng nơi xuất phát lỗi

Giải pháp 2. Bật biểu tượng tab/dấu cách trong trình chỉnh sửa

Nếu bạn gặp khó khăn khi thụt lề mã của mình bằng cách 'đoán' như tất cả các lập trình viên vẫn làm, bạn có thể bật các ký hiệu tab/dấu cách trong IDE hoặc trình chỉnh sửa mã của mình. Tùy chọn này sẽ kích hoạt các 'dấu chấm' nhỏ trong mã của bạn trong đó mỗi dấu chấm đại diện cho một khoảng trắng hoặc tab. Bạn có thể sử dụng điều này để thụt lề mã đúng cách hơn và đảm bảo rằng không có phần thụt lề thừa hoặc thiếu một số

Trong ví dụ này, chúng tôi sẽ sử dụng Notepad++ và xem cách bạn có thể bật các ký hiệu. Nếu bạn đang sử dụng phần mềm khác để chỉnh sửa mã, bạn có thể bật cài đặt dành riêng cho phần mềm đó

  1. Nhấn Xem > Hiển thị biểu tượng > Hiển thị khoảng trắng và TAB
    Lỗi thụt lề trong Python là gì
    Bật khoảng trắng và tab – Notepad++
  1. Bây giờ tùy chọn được kích hoạt. Bạn cũng có thể bật Hướng dẫn thụt lề để mọi thứ trở nên dễ dàng hơn với bạn
Lỗi thụt lề trong Python là gì
Mã mẫu với thụt đầu dòng chính xác

Kiểm tra ví dụ trên. Xem thụt đầu dòng được thực hiện sau mỗi lớp. Mỗi không gian được đại diện bởi một dấu chấm duy nhất. Sau khi thực hiện các thay đổi đối với lỗi thụt đầu dòng trên mã của bạn, hãy chạy lại mã đó và xem điều này có giải quyết được sự cố không

Lỗi thụt lề thường xảy ra khi mã chứa kết hợp cả tab và khoảng trắng để thụt lề. Tôi có một giải pháp rất hay để sửa nó, chỉ cần mở mã của bạn trong trình soạn thảo văn bản cao cấp và tìm 'Tab Size' ở góc dưới cùng bên phải của Trình soạn thảo văn bản tuyệt vời và nhấp vào nó. Bây giờ chọn một trong hai

'Convert Indentation to Spaces'

HOẶC

'Convert Indentation to Tabs'

Mã của bạn sẽ hoạt động trong cả hai trường hợp

Ngoài ra, nếu bạn muốn Sublime text tự động làm điều đó cho mọi mã, bạn có thể cập nhật cài đặt Tùy chọn như bên dưới. -

Các bạn đọc like ủng hộ MUO nhé. Khi bạn mua hàng bằng các liên kết trên trang web của chúng tôi, chúng tôi có thể kiếm được hoa hồng liên kết. Đọc thêm

Thụt lề là một tính năng quan trọng của mã có thể đọc được, có thể bảo trì, nhưng ít ngôn ngữ thực thi nó. Python là một trong số ít đó

Nếu Python xác định mã của bạn được thụt lề không chính xác, bạn sẽ thấy thông báo “IndentationError” khi chạy mã của mình. Nhưng làm thế nào để bạn khắc phục điều này và làm thế nào để bạn ngăn chặn nó trong tương lai?

Tại sao bạn nhận được IndentationError trong Python?

“Lỗi thụt lề. mong đợi một lỗi khối thụt lề” là điều bạn có thể thấy khi lần đầu tiên bắt đầu sử dụng Python, đặc biệt nếu bạn đến từ một ngôn ngữ lập trình khác

Các chi tiết cụ thể của quy tắc thụt đầu dòng của Python rất phức tạp, nhưng chúng tóm gọn lại một điều. mã thụt lề trong khối. Điều này áp dụng cho các hàm, mệnh đề if, v.v. Đây là một ví dụ về mã Python được định dạng không chính xác

 fname = "Gaurav"

lname = "Siyal"


if fname == "Gaurav" and lname == "Siyal":

print("You're Gaurav")

else:

print("You're somebody else")

Khi bạn cố chạy đoạn mã trên, bạn sẽ nhận được một thông báo như thế này

  File "tmp.py", line 5

   print("You're Gaurav")

       ^

IndentationError: expected an indented block

Thay vào đó, bạn nên thêm một tab hoặc một loạt dấu cách ở đầu hai dòng đại diện cho các khối

 fname = "Gaurav"
lname = "Siyal"
    
if fname == "Gaurav" and lname == "Siyal":
    print("You're Gaurav")
else:
    print("You're somebody else")

Nếu bạn thụt lề bằng dấu cách, bạn thực sự có thể sử dụng bất kỳ số nào bạn thích, miễn là bạn nhất quán và rõ ràng. Hầu hết các lập trình viên sử dụng hai, bốn hoặc tám khoảng trắng

Các trường hợp phổ biến của thụt đầu dòng chính xác

Dưới đây là một số ví dụ mà bạn có thể tham khảo để đảm bảo rằng mình đang thụt lề chính xác

câu lệnh if

Thụt lề khối theo sau câu lệnh if

 if my_name == "Gaurav":
    print("My name is Gaurav")
   return True

Chức năng

Phần thân của hàm là một khối. Bạn nên thụt lề toàn bộ khối này

 def magic_number():
   result = 42
   return result
    
print magic_number()

Đối với vòng lặp

Như với câu lệnh if, phần thân của vòng lặp for phải được thụt vào một cấp so với dòng bắt đầu bằng từ khóa for

 for i in range(10):
    print (i)

Đảm bảo trình chỉnh sửa của bạn thụt lề chính xác

Hầu hết các trình soạn thảo văn bản hiện đại đều hỗ trợ thụt mã tự động. Nếu trình soạn thảo của bạn xác định rằng một dòng mã phải được thụt vào, nó sẽ tự động thêm các tab hoặc khoảng trắng

Trong Spyder, các tùy chọn thụt đầu dòng có sẵn trong Công cụ > Tùy chọn > Mã nguồn

Spyder interface

Nếu bạn đang sử dụng vim, bạn có thể chỉnh sửa cấu hình của mình và sử dụng tùy chọn tự động thụt lề và các tùy chọn liên quan để định cấu hình thụt lề. Ví dụ: đây là một thiết lập phổ biến

________số 8

Điều này sẽ tự động thụt lề bằng cách sử dụng bốn dấu cách

Tuy nhiên, không trình soạn thảo nào có thể tự động chống đạn. Bạn vẫn cần chú ý đến việc thụt lề vì một số trường hợp không rõ ràng

A Python function to compute the factorial of an integer

Trong ví dụ này, câu lệnh return cuối cùng được thụt vào một cấp từ chữ ký hàm trên dòng đầu tiên. Tuy nhiên, nếu bạn đặt con trỏ ở cuối dòng áp chót và nhấn Enter, một trong hai điều có thể xảy ra. Trình chỉnh sửa của bạn có thể định vị con trỏ

  1. Hai mức thụt lề trong, căn chỉnh với "res =. "
  2. Một mức thụt lề trong, căn chỉnh với "else. "

Trình chỉnh sửa của bạn không thể phân biệt giữa hai trường hợp này. bạn có thể muốn thêm nhiều mã hơn vào khối if/else hoặc bạn có thể không

Xử lý lỗi 'Dự kiến ​​​​khối thụt lề' của Python

Lỗi xảy ra hàng ngày trong Python, giống như trong bất kỳ ngôn ngữ lập trình nào khác. Các quy tắc nghiêm ngặt của Python về thụt đầu dòng có thể thêm một loại lỗi mới để suy nghĩ, nhưng chúng rất hữu ích. Mã được thụt lề đúng cách sẽ dễ đọc hơn và nhất quán giữa các nhóm

Lỗi thụt lề không phải là lỗi duy nhất bạn sẽ phải xử lý. Làm quen với các lỗi Python phổ biến sẽ giúp bạn biết cách gỡ lỗi và phải làm gì để khắc phục chúng

Điều gì gây ra lỗi thụt lề trong Python?

Nguyên nhân gây ra lỗi thụt lề trong Python . if you miss out on adding tabs or spaces between your lines of code, then you will most likely experience this error.

Lỗi thụt đầu dòng có phải là lỗi cú pháp không?

Điều này xảy ra chủ yếu là do không có tab và khoảng trắng giữa các dòng mã. Nếu có bất kỳ khoảng trống nào bị thiếu giữa mã, bạn sẽ gặp phải lỗi này vì Python là ngôn ngữ thủ tục. Không có cú pháp cụ thể nào cho việc thụt đầu dòng .

Thụt đầu dòng chính xác trong Python là gì?

Python sử dụng bốn dấu cách làm dấu cách thụt lề mặc định . Tuy nhiên, số lượng không gian có thể là bất cứ thứ gì; . Nhưng cần tối thiểu một khoảng trắng để thụt lề một câu lệnh. Dòng đầu tiên của mã python không thể có thụt đầu dòng.

Lỗi khối thụt lề trong Python là gì?

Lỗi này xảy ra khi Python đang tìm kiếm một khối mã thụt lề sau một số loại câu lệnh nhất định . Khối thụt lề cho Python biết rằng mã trong khối có liên quan đến câu lệnh.