Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> Python

Lỗi SyntaxError: Invalid Syntax trong Python và cách khắc phục

Cú pháp (Syntax) là những quy tắc quy định cách viết ngôn ngữ lập trình. Mỗi ngôn ngữ có tập quy tắc cú pháp riêng khác biệt. Chúng ta có thể ví chúng như ngữ pháp hoặc dấu câu trong ngôn ngữ nói. Dấu hỏi trong tiếng Anh (?) khác với dấu hỏi trong tiếng Hy Lạp (;).

Bạn có thể suy ra rằng khi gặp lỗi cú pháp (syntax error), bạn đang viết ngôn ngữ lập trình không đúng cách. Bạn có thể vô tình bỏ sót hoặc sử dụng cú pháp từ ngôn ngữ khác, điều thường xảy ra khi các lập trình viên mở rộng ngăn xếp công nghệ (tech stack) của mình.

Trong bài viết này, chúng ta sẽ đi sâu vào các lỗi Python SyntaxError phổ biến, cung cấp ví dụ và chỉ cách khắc phục chúng.

Các SyntaxError thường gặp và cách sửa

Dictionary (Từ điển)

Hãy thử tìm ra lý do tại sao lỗi cú pháp được ném ra trong đoạn mã dưới đây.

student_gpas = { 'Mary': 3.0, 'Tim': 2.5 'John': 4.0 }
print(f'Mary has a {student_gpas["Mary"]} GPA.') # returns SyntaxError: invalid syntax

Nếu bạn nói "thiếu dấu phẩy sau cặp khóa-giá trị 2.5", bạn hoàn toàn đúng. Dictionary, giống như object trong JavaScript, cần một dấu phẩy sau mỗi cặp khóa-giá trị, trừ cặp cuối cùng.

Giải pháp cho lỗi trên:

student_gpas = { 'Mary': 3.0, 'Tim': 2.5, 'John': 4.0 }
print(f'Mary has a {student_gpas["Mary"]} GPA.') # returns Mary has a 3.0 GPA.

Dấu nháy (Quotes)

Hãy thử tìm ra lý do lỗi cú pháp trong đoạn mã dưới đây bị ném ra.

print('Mary's teacher stated that she has a 3.0 GPA.') # returns SyntaxError: invalid syntax

Nếu bạn nói "sử dụng cùng loại dấu nháy bên trong chuỗi", bạn đúng. Có vài cách để tránh lỗi cú pháp khi dùng dấu nháy trong Python.

1. Sử dụng dấu nháy kép

print("Mary's teacher stated that she has a 3.0 GPA.")

2. Sử dụng dấu gạch chéo ngược (backslash)

print('Mary\'s teacher stated that she has a 3.0 GPA.')

Sử dụng cú pháp mới với phiên bản Python cũ

Hãy đảm bảo cú pháp bạn sử dụng tương thích với phiên bản Python bạn đang chạy. Ví dụ, bất kỳ phiên bản Python nào trước 3.6 sẽ không nhận ra f-strings và sẽ ném lỗi cú pháp không hợp lệ nếu bạn chạy cú pháp đó. Các nhà phát triển có thể cập nhật phiên bản hoặc sử dụng cú pháp tương thích cho phiên bản đã cài.

student_gpas = { 'Mary': 3.0, 'Tim': 2.5, 'John': 4.0 }
print(f'Mary has a {student_gpas["Mary"]} GPA.') # returns SyntaxError: invalid syntax on older versions of Python

Sử dụng từ khóa Python không đúng cách

Cách tốt nhất để biết bạn có đang dùng từ khóa Python không phù hợp là biết những từ khóa đó là gì và chúng được dùng để làm gì trong Python. Để xem tổng quan sâu về một số từ khóa Python, hãy xem các bài: Cách dùng từ khóa not trong Python, Từ khóa yield trong Python: Hướng dẫn, và Giải pháp lỗi "positional argument follows keyword argument".

Hãy thử tìm ra lý do lỗi cú pháp trong đoạn mã dưới đây bị ném ra.

continue = True
print(continue) # returns SyntaxError: invalid syntax

Nếu bạn trả lời "vì chúng ta đang gán giá trị cho một từ khóa", bạn đúng. continue là từ khóa trong Python dùng để tiếp tục vòng lặp tiếp theo. Cách sửa là gán giá trị True cho một tên biến không phải từ khóa Python.

on = True
print(on) # returns True