Python - Syntax Errors

Python Syntax Errors

Trong Python, lỗi cú pháp là một trong những lỗi phổ biến nhất mà lập trình viên gặp phải, đặc biệt là những người mới bắt đầu với ngôn ngữ này. Hướng dẫn này sẽ giúp bạn hiểu lỗi cú pháp là gì, cách xác định chúng và cách sửa chúng.

What is a Syntax Error?

Lỗi cú pháp trong Python (hoặc bất kỳ ngôn ngữ lập trình nào) là một lỗi xảy ra khi mã không tuân theo các quy tắc cú pháp của ngôn ngữ. Lỗi cú pháp được trình thông dịch hoặc trình biên dịch phát hiện vào thời điểm phân tích mã, và chúng ngăn mã được thực thi.

Các lỗi này xảy ra vì mã code được viết không tuân thủ các quy tắc ngữ pháp của Python, khiến cho trình thông dịch không thể hiểu và thực thi các lệnh.

Common Causes of Syntax Errors

Dưới đây là những nguyên nhân phổ biến gây ra lỗi cú pháp −

  • Missing colons (:) after control flow statements (e.g., if, for, while) − Colons are used to define the beginning of an indented block, such as in functions, loops, and conditionals.
  • # Error: Missing colon (:) after the if statement
    if True
       print("This will cause a syntax error")
    
  • Incorrect indentation − Python uses indentation to define the structure of code blocks. Incorrect indentation can lead to syntax errors.
  • # Error: The print statement is not correctly indented
    def example_function():
    print("This will cause a syntax error")
    
  • Misspelled keywords or incorrect use of keywords.
  • # Error: 'print' is misspelled as 'prnt'
    prnt("Hello, World!")  
    
  • Unmatched parentheses, brackets, or braces − Python requires that all opening parentheses (, square brackets [, and curly braces { have corresponding closing characters ), ], and }.
  • # Error: The closing parenthesis is missing.
    print("This will cause a syntax error"
    

    How to Identify Syntax Errors

    Việc xác định lỗi cú pháp trong Python đôi khi có thể dễ dàng, đặc biệt khi bạn nhận được một thông báo lỗi rõ ràng từ trình thông dịch. Tuy nhiên, đôi khi, điều này có thể hơi khó khăn. Dưới đây là một số cách để giúp bạn xác định và giải quyết lỗi cú pháp một cách hiệu quả −

    Reading Error Messages

    Khi bạn chạy một script Python, trình thông dịch sẽ dừng thực thi và hiển thị thông báo lỗi nếu nó gặp phải lỗi cú pháp. Hiểu cách đọc những thông báo lỗi này là rất quan trọng.

    Example Error Message

    File "script.py", line 1
       print("Hello, World!"
                            ^
    SyntaxError: EOL while scanning string literal
    

    Thông điệp lỗi này có thể được chia thành các phần −

    • File "script.py": Chỉ ra tệp nơi xảy ra lỗi.

    • line 1: Indicates the line number in the file where the interpreter detected the error.
    • print("Hello, World!": Hiển thị dòng mã có lỗi.

    • ^: Chỉ ra vị trí trong dòng nơi lỗi đã được phát hiện.

    Using an Integrated Development Environment (IDE)

    Các IDE rất hữu ích trong việc xác định lỗi cú pháp vì chúng thường cung cấp phản hồi theo thời gian thực. Dưới đây là một số tính năng của IDE giúp xác định lỗi cú pháp −

    • Syntax Highlighting: Các IDE làm nổi bật cú pháp mã bằng các màu sắc khác nhau. Nếu một phần của mã bị tô màu không chính xác, điều đó có thể chỉ ra một lỗi cú pháp.

    • Linting: Các công cụ như pylint hoặc flake8 kiểm tra mã của bạn để phát hiện lỗi và các vấn đề về phong cách.

    • Error Underlining: Nhiều IDE gạch chân các lỗi cú pháp bằng một đường lượn sóng màu đỏ.

    • Tooltips and Error Messages: Di chuyển chuột qua đoạn mã được gạch chân thường cung cấp một tooltip với mô tả về lỗi.

    Các IDE phổ biến với những tính năng này bao gồm PyCharm, Visual Studio Code và Jupyter Notebook.

    Running Code in Small Chunks

    Nếu bạn có một đoạn mã lớn, việc chạy mã trong các phần nhỏ hơn có thể hữu ích. Điều này có thể giúp xác định phần của mã gây ra lỗi cú pháp.

    Ví dụ, nếu bạn có một kịch bản với nhiều hàm và bạn gặp lỗi cú pháp, hãy thử chạy từng hàm một cách độc lập để xác định nơi có thể xảy ra lỗi.

    Using Version Control

    Các hệ thống kiểm soát phiên bản như Git có thể giúp bạn theo dõi các thay đổi đối với mã của bạn. Nếu bạn gặp phải lỗi cú pháp, bạn có thể so sánh phiên bản hiện tại của mã với các phiên bản trước đó để xem những thay đổi nào có thể đã gây ra lỗi.

    Fixing Syntax Errors

    Việc sửa lỗi cú pháp trong Python liên quan đến việc hiểu thông điệp lỗi được cung cấp bởi trình thông dịch, xác định vấn đề chính xác trong mã, và sau đó thực hiện các chỉnh sửa cần thiết. Dưới đây là hướng dẫn chi tiết về cách tiếp cận và sửa lỗi cú pháp một cách có hệ thống:

    Read the Error Message Carefully

    Thông báo lỗi của Python rất nhiều thông tin. Chúng chỉ ra tên tệp, số dòng và loại lỗi cú pháp −

    Example Error Message

    Giả sử chúng ta đã viết một câu lệnh in như sau −

    print("Hello, World!"
    

    Thông điệp sau đây cho biết có một lỗi cú pháp ở dòng 1, cho thấy rằng ở đâu đó trong mã, một dấu ngoặc đã không được đóng, dẫn đến lỗi cú pháp.

    File "/home/cg/root/66634a37734ad/main.py", line 1
        print("Hello, World!"
             ^
    SyntaxError: '(' was never closed
    

    Để sửa lỗi này, bạn cần đảm bảo rằng mỗi dấu ngoặc đơn mở đều có một dấu ngoặc đơn đóng tương ứng. Dưới đây là mã đã được sửa −

    print("Hello, World!")
    

    Locate the Error

    Để xác định lỗi, bạn cần đến số dòng được đề cập trong thông báo lỗi. Ngoài ra, hãy kiểm tra không chỉ dòng được chỉ định mà còn các dòng xung quanh, vì đôi khi vấn đề có thể xuất phát từ các dòng trước đó.

    Understand the Nature of the Error

    Để hiểu bản chất của lỗi, bạn cần xác định loại lỗi cú pháp nào (ví dụ: thiếu dấu ngoặc, thụt lề không đúng, thiếu dấu hai chấm, v.v.). Ngoài ra, hãy tham khảo các lỗi cú pháp phổ biến và các mẫu của chúng.

    Correct the Syntax

    Dựa trên loại lỗi, hãy sửa mã code.