Xem bây giờ hướng dẫn này có một khóa học video liên quan được tạo bởi nhóm Python thực sự. Xem cùng với hướng dẫn bằng văn bản để hiểu sâu hơn về sự hiểu biết của bạn: Xác định cú pháp Python không hợp lệ This tutorial has a related video course created by the Real Python team. Watch it together with the written tutorial to deepen your understanding: Identify Invalid Python Syntax Show
Python được biết đến với cú pháp đơn giản. Tuy nhiên, khi bạn học Python lần đầu tiên hoặc khi bạn đến Python với một nền tảng vững chắc trong ngôn ngữ lập trình khác, bạn có thể gặp một số điều mà Python không cho phép. Nếu bạn đã từng nhận được 1 khi cố gắng chạy mã Python của mình, thì hướng dẫn này có thể giúp bạn. Trong suốt hướng dẫn này, bạn sẽ thấy các ví dụ phổ biến về cú pháp không hợp lệ trong Python và tìm hiểu cách giải quyết vấn đề. 1 when trying to run your Python code, then this guide can help you. Throughout this tutorial, you’ll see common examples of invalid syntax in Python and learn how to resolve the issue. Đến cuối hướng dẫn này, bạn sẽ có thể:
Cú pháp không hợp lệ trong PythonKhi bạn chạy mã Python của mình, trước tiên trình thông dịch sẽ phân tích nó để chuyển đổi nó thành mã Byte Python, sau đó nó sẽ thực thi. Thông dịch viên sẽ tìm thấy bất kỳ cú pháp không hợp lệ nào trong Python trong giai đoạn thực hiện chương trình đầu tiên này, còn được gọi là giai đoạn phân tích cú pháp. Nếu trình thông dịch có thể phân tích thành công mã python của bạn, thì điều này có nghĩa là bạn đã sử dụng cú pháp không hợp lệ ở đâu đó trong mã của mình. Thông dịch viên sẽ cố gắng cho bạn thấy lỗi đó xảy ra ở đâu.parsing stage. If the interpreter can’t parse your Python code successfully, then this means that you used invalid syntax somewhere in your code. The interpreter will attempt to show you where that error occurred. Khi bạn học Python lần đầu tiên, có thể gây khó chịu khi nhận được 1. Python sẽ cố gắng giúp bạn xác định vị trí của cú pháp không hợp lệ trong mã của bạn, nhưng dấu vết mà nó cung cấp có thể hơi khó hiểu. Đôi khi, mã nó chỉ ra là hoàn toàn tốt.Bạn có thể xử lý cú pháp không hợp lệ trong Python như các ngoại lệ khác. Ngay cả khi bạn đã cố gắng bao bọc một khối 4 và 5 xung quanh mã với cú pháp không hợp lệ, bạn vẫn thấy trình thông dịch tăng 1.>>> len('hello') == 5 True 1 Ngoại lệ và TraceBackKhi trình thông dịch gặp phải cú pháp không hợp lệ trong mã Python, nó sẽ tăng ngoại lệ 1 và cung cấp một dấu vết với một số thông tin hữu ích để giúp bạn gỡ lỗi lỗi. Ở đây, một số mã chứa cú pháp không hợp lệ trong Python: 1 exception and provide a traceback with some helpful information to help you debug the error. Here’s some code that contains invalid syntax in Python:
Bạn có thể thấy cú pháp không hợp lệ trong từ điển theo nghĩa đen trên dòng 4. Mục thứ hai, 9, bị thiếu dấu phẩy. Nếu bạn đã cố gắng chạy mã này như hiện tại, thì bạn sẽ nhận được dấu vết sau:
Lưu ý rằng thông báo TraceBack định vị lỗi trong dòng 5, không phải dòng 4. Trình thông dịch Python đang cố gắng chỉ ra vị trí của cú pháp không hợp lệ. Tuy nhiên, nó chỉ có thể thực sự chỉ ra nơi nó lần đầu tiên nhận thấy một vấn đề. Khi bạn nhận được một dấu vết 1 và mã mà dấu vết đang chỉ ra trông ổn, thì bạn sẽ muốn bắt đầu di chuyển ngược qua mã cho đến khi bạn có thể xác định những gì sai.Trong ví dụ trên, có một vấn đề với việc bỏ qua dấu phẩy, tùy thuộc vào những gì đến sau nó. Ví dụ, không có vấn đề gì với dấu phẩy bị thiếu sau 1 trong dòng 5. Nhưng một khi thông dịch viên gặp phải điều gì đó không có ý nghĩa, nó chỉ có thể chỉ cho bạn điều đầu tiên nó thấy rằng nó không thể hiểu được.Có một vài yếu tố của một dấu vết 1 có thể giúp bạn xác định vị trí của cú pháp không hợp lệ trong mã của bạn:
Trong ví dụ trên, tên tệp được đưa ra là 5, số dòng là 5 và Caret chỉ vào báo giá đóng của khóa từ điển 6. TraceBack 1 có thể không chỉ ra vấn đề thực sự, nhưng nó sẽ chỉ ra nơi đầu tiên mà thông dịch viên không thể hiểu được cú pháp.Có hai trường hợp ngoại lệ khác mà bạn có thể thấy Python tăng lên. Chúng tương đương với 1 nhưng có tên khác nhau:
Những ngoại lệ này đều được thừa hưởng từ lớp 1, nhưng họ là những trường hợp đặc biệt trong đó liên quan đến thụt lề. Một 9 được tăng lên khi mức thụt vào mã của bạn không phù hợp. Một 0 được nâng lên khi mã của bạn sử dụng cả tab và khoảng trắng trong cùng một tệp. Bạn sẽ xem xét kỹ hơn về những ngoại lệ này trong phần sau.Các vấn đề cú pháp phổ biếnKhi bạn lần đầu tiên gặp 1, thật hữu ích khi biết tại sao có vấn đề và bạn có thể làm gì để sửa cú pháp không hợp lệ trong mã Python của bạn. Trong các phần dưới đây, bạn sẽ thấy một số lý do phổ biến hơn mà 1 có thể được nâng lên và cách bạn có thể sửa chúng.Sử dụng sai toán tử chuyển nhượng (>>> for i range(10): File "<stdin>", line 1 for i range(10): ^ SyntaxError: invalid syntax 6)Có một số trường hợp trong Python nơi bạn không thể thực hiện các bài tập cho các đối tượng. Một số ví dụ đang gán cho các cuộc gọi theo nghĩa đen và chức năng. Trong khối mã bên dưới, bạn có thể thấy một vài ví dụ cố gắng thực hiện việc này và kết quả là 1 Tracebacks:>>>
Ví dụ đầu tiên cố gắng gán giá trị 8 cho cuộc gọi 9. Thông điệp 1 rất hữu ích trong trường hợp này. Nó cho bạn biết rằng bạn có thể gán một giá trị cho một cuộc gọi chức năng.Các ví dụ thứ hai và thứ ba cố gắng gán một chuỗi và một số nguyên cho các nghĩa đen. Quy tắc tương tự là đúng với các giá trị theo nghĩa đen khác. Một lần nữa, các tin nhắn Traceback chỉ ra rằng vấn đề xảy ra khi bạn cố gắng gán một giá trị cho một nghĩa đen. Nó có khả năng rằng ý định của bạn không phải là gán giá trị cho một cuộc gọi theo nghĩa đen hoặc chức năng. Chẳng hạn, điều này có thể xảy ra nếu bạn vô tình bỏ lại dấu hiệu tương đương ( 6), điều này sẽ biến nhiệm vụ thành một so sánh. Một so sánh, như bạn có thể thấy dưới đây, sẽ có hiệu lực:>>>
Ví dụ đầu tiên cố gắng gán giá trị 8 cho cuộc gọi 9. Thông điệp 1 rất hữu ích trong trường hợp này. Nó cho bạn biết rằng bạn có thể gán một giá trị cho một cuộc gọi chức năng.Các ví dụ thứ hai và thứ ba cố gắng gán một chuỗi và một số nguyên cho các nghĩa đen. Quy tắc tương tự là đúng với các giá trị theo nghĩa đen khác. Một lần nữa, các tin nhắn Traceback chỉ ra rằng vấn đề xảy ra khi bạn cố gắng gán một giá trị cho một nghĩa đen.Nó có khả năng rằng ý định của bạn không phải là gán giá trị cho một cuộc gọi theo nghĩa đen hoặc chức năng. Chẳng hạn, điều này có thể xảy ra nếu bạn vô tình bỏ lại dấu hiệu tương đương ( 6), điều này sẽ biến nhiệm vụ thành một so sánh. Một so sánh, như bạn có thể thấy dưới đây, sẽ có hiệu lực:protected words that have special meaning in Python. These are words you can’t use as identifiers, variables, or function
names in your code. They’re a part of the language and can only be used in the context that Python allows.Hầu hết thời gian, khi Python nói với bạn rằng bạn đang thực hiện một nhiệm vụ cho một cái gì đó có thể được gán cho, trước tiên bạn có thể muốn kiểm tra để đảm bảo rằng tuyên bố không nên là một biểu thức boolean thay thế. Bạn cũng có thể gặp phải vấn đề này khi bạn đang cố gắng gán một giá trị cho từ khóa Python, mà bạn sẽ bao gồm trong phần tiếp theo.
Viết sai từ một từ khóamisspell a keyword in your Python code, then you’ll get a 1. For example, here’s what happens if you spell the keyword 3
incorrectly:
>>>
Ví dụ đầu tiên cố gắng gán giá trị 8 cho cuộc gọi 9. Thông điệp 1 rất hữu ích trong trường hợp này. Nó cho bạn biết rằng bạn có thể gán một giá trị cho một cuộc gọi chức năng.Các ví dụ thứ hai và thứ ba cố gắng gán một chuỗi và một số nguyên cho các nghĩa đen. Quy tắc tương tự là đúng với các giá trị theo nghĩa đen khác. Một lần nữa, các tin nhắn Traceback chỉ ra rằng vấn đề xảy ra khi bạn cố gắng gán một giá trị cho một nghĩa đen.miss them altogether: >>>
Ví dụ đầu tiên cố gắng gán giá trị 8 cho cuộc gọi 9. Thông điệp 1 rất hữu ích trong trường hợp này. Nó cho bạn biết rằng bạn có thể gán một giá trị cho một cuộc gọi chức năng.Các ví dụ thứ hai và thứ ba cố gắng gán một chuỗi và một số nguyên cho các nghĩa đen. Quy tắc tương tự là đúng với các giá trị theo nghĩa đen khác. Một lần nữa, các tin nhắn Traceback chỉ ra rằng vấn đề xảy ra khi bạn cố gắng gán một giá trị cho một nghĩa đen.misuse a protected Python keyword. Remember, keywords are only allowed to be used in specific situations. If you use them incorrectly, then you’ll have invalid syntax in your Python code. A common example of this is the use of 7 or 8 outside of a loop. This can easily happen during development when you’re implementing things and happen to move logic outside of a loop:>>>
Ví dụ đầu tiên cố gắng gán giá trị 8 cho cuộc gọi 9. Thông điệp 1 rất hữu ích trong trường hợp này. Nó cho bạn biết rằng bạn có thể gán một giá trị cho một cuộc gọi chức năng.Các ví dụ thứ hai và thứ ba cố gắng gán một chuỗi và một số nguyên cho các nghĩa đen. Quy tắc tương tự là đúng với các giá trị theo nghĩa đen khác. Một lần nữa, các tin nhắn Traceback chỉ ra rằng vấn đề xảy ra khi bạn cố gắng gán một giá trị cho một nghĩa đen. >>> Nó có khả năng rằng ý định của bạn không phải là gán giá trị cho một cuộc gọi theo nghĩa đen hoặc chức năng. Chẳng hạn, điều này có thể xảy ra nếu bạn vô tình bỏ lại dấu hiệu tương đương ( 6), điều này sẽ biến nhiệm vụ thành một so sánh. Một so sánh, như bạn có thể thấy dưới đây, sẽ có hiệu lực:Hầu hết thời gian, khi Python nói với bạn rằng bạn đang thực hiện một nhiệm vụ cho một cái gì đó có thể được gán cho, trước tiên bạn có thể muốn kiểm tra để đảm bảo rằng tuyên bố không nên là một biểu thức boolean thay thế. Bạn cũng có thể gặp phải vấn đề này khi bạn đang cố gắng gán một giá trị cho từ khóa Python, mà bạn sẽ bao gồm trong phần tiếp theo. Viết sai chính tả, thiếu hoặc lạm dụng từ khóa Python Từ khóa Python là một tập hợp các từ được bảo vệ có ý nghĩa đặc biệt trong Python. Đây là những từ bạn có thể sử dụng làm số nhận dạng, biến hoặc tên hàm trong mã của bạn. Họ là một phần của ngôn ngữ và chỉ có thể được sử dụng trong bối cảnh mà Python cho phép. Có ba cách phổ biến mà bạn có thể sử dụng từ khóa:
Một ví dụ khác là nếu bạn cố gắng gán từ khóa Python cho một biến hoặc sử dụng từ khóa để xác định hàm: Bạn có thể chạy mã sau để xem danh sách các từ khóa trong bất kỳ phiên bản nào của Python mà bạn đang chạy:
2 cũng cung cấp 3 hữu ích. Nếu bạn chỉ cần một cách nhanh chóng để kiểm tra biến 1, thì bạn có thể sử dụng một liner sau:>>>
Mã này sẽ cho bạn biết nhanh chóng nếu mã định danh mà bạn đang cố gắng sử dụng là từ khóa hay không. Thiếu dấu ngoặc đơn, dấu ngoặc và trích dẫnThông thường, nguyên nhân của cú pháp không hợp lệ trong mã Python là dấu ngoặc đơn bị bỏ lỡ hoặc không khớp, khung hoặc báo giá. Những thứ này có thể khó phát hiện ra trong các dấu ngoặc đơn rất dài hoặc các khối đa dòng dài hơn. Bạn có thể phát hiện ra các trích dẫn không khớp hoặc thiếu với sự trợ giúp của Python, Tracebacks: >>> 0Mã này sẽ cho bạn biết nhanh chóng nếu mã định danh mà bạn đang cố gắng sử dụng là từ khóa hay không.
Ở đây, Traceback chỉ vào mã không hợp lệ trong đó có một 5 sau khi kết thúc báo giá. Để khắc phục điều này, bạn có thể thực hiện một trong hai thay đổi:>>> 1Mã này sẽ cho bạn biết nhanh chóng nếu mã định danh mà bạn đang cố gắng sử dụng là từ khóa hay không. Thiếu dấu ngoặc đơn, dấu ngoặc và trích dẫn 2Thông thường, nguyên nhân của cú pháp không hợp lệ trong mã Python là dấu ngoặc đơn bị bỏ lỡ hoặc không khớp, khung hoặc báo giá. Những thứ này có thể khó phát hiện ra trong các dấu ngoặc đơn rất dài hoặc các khối đa dòng dài hơn. Bạn có thể phát hiện ra các trích dẫn không khớp hoặc thiếu với sự trợ giúp của Python, Tracebacks: 3Ở đây, Traceback chỉ vào mã không hợp lệ trong đó có một 5 sau khi kết thúc báo giá. Để khắc phục điều này, bạn có thể thực hiện một trong hai thay đổi:Thoát khỏi trích dẫn duy nhất bằng dấu gạch chéo ngược ( 6)Bao quanh toàn bộ chuỗi trong các trình điều khiển kép thay thế ( 7) 4Một sai lầm phổ biến khác là quên đóng chuỗi. Với cả hai chuỗi được trích xuất kép và được trích xuất một lần, tình huống và dấu vết là như nhau: 5Lần này, CARET trong Traceback chỉ ra mã vấn đề. Thông điệp 1, 9, cụ thể hơn một chút và hữu ích trong việc xác định vấn đề. Điều này có nghĩa là trình thông dịch Python đã đến cuối dòng (EOL) trước khi một chuỗi mở được đóng. Để khắc phục điều này, hãy đóng chuỗi bằng một báo giá phù hợp với cái bạn đã sử dụng để bắt đầu nó. Trong trường hợp này, đó sẽ là một trích dẫn kép ( 0).Trích dẫn bị thiếu trong các câu lệnh bên trong chuỗi F cũng có thể dẫn đến cú pháp không hợp lệ trong Python: 6Ở đây, tham chiếu đến từ điển 1 bên trong chuỗi F được in đang thiếu trích dẫn kép đóng từ tài liệu tham khảo chính. TraceBack kết quả như sau: 7Python xác định vấn đề và cho bạn biết rằng nó tồn tại bên trong chuỗi F. Thông báo 2 cũng chỉ ra vấn đề là gì. CARET trong trường hợp này chỉ chỉ vào phần đầu của chuỗi F.Điều này có thể không hữu ích như khi CARET chỉ vào khu vực có vấn đề của chuỗi F, nhưng nó thu hẹp ở nơi bạn cần nhìn. Có một chuỗi chưa kết thúc ở đâu đó bên trong chuỗi F đó. Bạn chỉ cần tìm ra ở đâu. Để khắc phục vấn đề này, hãy đảm bảo rằng tất cả các trích dẫn và dấu ngoặc trong chuỗi F bên trong đều có mặt. Tình hình chủ yếu là giống nhau đối với dấu ngoặc đơn và dấu ngoặc. Ví dụ, nếu bạn bỏ khung vuông đóng từ danh sách, thì Python sẽ phát hiện ra điều đó và chỉ ra nó. Có một vài biến thể của điều này, tuy nhiên. Đầu tiên là rời khỏi khung đóng của danh sách:Khi bạn chạy mã này, bạn sẽ được thông báo rằng có một vấn đề với cuộc gọi đến 3:>>> 8Điều mà xảy ra ở đây là Python nghĩ rằng danh sách này chứa ba yếu tố: 4, 5 và 6. Python sử dụng khoảng trắng để nhóm các thứ một cách hợp lý và vì không có dấu phẩy hoặc khung tách biệt 7 khỏi 8, Python gộp chúng lại với nhau như là yếu tố thứ ba của danh sách.Một biến thể khác là thêm dấu phẩy kéo theo phần tử cuối cùng trong danh sách trong khi vẫn bỏ qua khung vuông đóng: >>> 9Bạn có thể sử dụng 05 để xác định từ điển nếu cú pháp đó hữu ích hơn.Sử dụng sai thụtCó hai lớp phụ của 1 giải quyết các vấn đề thụt vào các vấn đề cụ thể:
Trong khi các ngôn ngữ lập trình khác sử dụng niềng răng xoăn để biểu thị các khối mã, Python sử dụng khoảng trắng. Điều đó có nghĩa là Python mong đợi khoảng trắng trong mã của bạn sẽ hành xử có thể dự đoán được. Nó sẽ tăng một 9 nếu có một dòng trong một khối mã có số lượng không gian sai: 9 if there’s a line in a code block that has the wrong number of spaces: 0Điều này có thể khó nhìn thấy, nhưng dòng 5 chỉ có 2 không gian thụt vào. Nó phải phù hợp với câu lệnh 3, là 4 khoảng trắng. Rất may, Python có thể phát hiện ra điều này dễ dàng và sẽ nhanh chóng cho bạn biết vấn đề là gì.Mặc dù vậy, cũng có một chút mơ hồ ở đây. Là dòng 13 dự định sau vòng lặp 3 hoặc bên trong khối vòng 3? Khi bạn chạy mã trên, bạn sẽ thấy lỗi sau: 1Mặc dù dấu vết trông rất giống với dấu vết 1, nhưng nó thực sự là một 9. Thông báo lỗi cũng rất hữu ích. Nó cho bạn biết rằng mức độ thụt của dòng không phù hợp với bất kỳ cấp độ thụt nào khác. Nói cách khác, 13 được thụt vào 2 không gian, nhưng Python có thể tìm thấy bất kỳ dòng mã nào khác phù hợp với mức độ thụt này. Bạn có thể khắc phục điều này một cách nhanh chóng bằng cách đảm bảo mã xếp hàng với mức thụt dự kiến.Loại khác của 1 là 0, mà bạn sẽ thấy bất cứ khi nào có một dòng chứa các tab hoặc không gian để thụt vào, trong khi phần còn lại của tệp chứa loại kia. Điều này có thể ẩn giấu cho đến khi Python chỉ ra cho bạn! 0, which you’ll see whenever there’s a line that contains either tabs or spaces for its indentation, while the rest of the file contains
the other. This might go hidden until Python points it out to you!Nếu kích thước tab của bạn có cùng chiều rộng với số lượng khoảng cách trong mỗi cấp độ thụt, thì có vẻ như tất cả các dòng đều ở cùng cấp độ. Tuy nhiên, nếu một dòng được thụt vào bằng khoảng trống và dòng kia được thụt vào với các tab, thì Python sẽ chỉ ra điều này là một vấn đề: 2Ở đây, dòng 5 được thụt vào với một tab thay vì 4 khoảng trống. Khối mã này có thể trông hoàn toàn tốt với bạn, hoặc nó có thể trông hoàn toàn sai, tùy thuộc vào cài đặt hệ thống của bạn. Python, tuy nhiên, sẽ nhận thấy vấn đề ngay lập tức. Nhưng trước khi bạn chạy mã để xem Python sẽ nói gì với bạn là sai, có thể hữu ích cho bạn khi thấy một ví dụ về mã trông như thế nào trong các cài đặt chiều rộng tab khác nhau: 3Lưu ý sự khác biệt trong hiển thị giữa ba ví dụ ở trên. Hầu hết các mã sử dụng 4 không gian cho mỗi cấp độ thụt, nhưng dòng 5 sử dụng một tab duy nhất trong cả ba ví dụ. Chiều rộng của tab thay đổi, dựa trên cài đặt chiều rộng tab:tab width setting:
Khi bạn chạy mã, bạn sẽ nhận được lỗi sau và theo dõi: 4Lưu ý 0 thay vì thông thường 1. Python chỉ ra dòng vấn đề và cung cấp cho bạn một thông báo lỗi hữu ích. Nó cho bạn biết rõ rằng có một hỗn hợp các tab và không gian được sử dụng để thụt vào cùng một tệp.Giải pháp cho điều này là tạo tất cả các dòng trong cùng một tệp mã Python sử dụng các tab hoặc không gian, nhưng không phải cả hai. Đối với các khối mã ở trên, bản sửa lỗi sẽ là tháo tab và thay thế nó bằng 4 khoảng trắng, sẽ in 23 sau khi vòng lặp 3 kết thúc.Xác định và gọi các chức năngBạn có thể chạy vào cú pháp không hợp lệ trong Python khi bạn xác định hoặc gọi các chức năng. Ví dụ: bạn sẽ thấy 1 nếu bạn sử dụng dấu chấm phẩy thay vì dấu hai chấm ở cuối định nghĩa hàm:>>> 5Traceback ở đây rất hữu ích, với CARET chỉ ra ngay cho nhân vật có vấn đề. Bạn có thể xóa cú pháp không hợp lệ này trong Python bằng cách chuyển ra dấu chấm phẩy cho một dấu hai chấm. Ngoài ra, các đối số từ khóa trong cả hai định nghĩa chức năng và các cuộc gọi chức năng cần phải theo đúng thứ tự. Đối số từ khóa luôn luôn đến sau các đối số vị trí. Việc không sử dụng thứ tự này sẽ dẫn đến 1:keyword
arguments in both function definitions and function calls need to be in the right order. Keyword arguments always come after positional arguments. Failure to use this ordering will lead to a 1:>>> 6Ở đây, một lần nữa, thông báo lỗi rất hữu ích khi cho bạn biết chính xác những gì sai với dòng. Thay đổi phiên bản PythonĐôi khi, mã hoạt động hoàn toàn tốt trong một phiên bản của Python bị phá vỡ trong một phiên bản mới hơn. Điều này là do những thay đổi chính thức trong cú pháp ngôn ngữ. Ví dụ nổi tiếng nhất về điều này là câu lệnh 9, đã đi từ một từ khóa trong Python 2 đến một chức năng tích hợp trong Python 3:>>> 7Đây là một trong những ví dụ mà thông báo lỗi được cung cấp với 1 tỏa sáng! Nó không chỉ cho bạn biết rằng bạn thiếu dấu ngoặc đơn trong cuộc gọi 9 mà còn cung cấp mã chính xác để giúp bạn khắc phục câu lệnh.Một vấn đề khác mà bạn có thể gặp phải là khi bạn đang đọc hoặc tìm hiểu về cú pháp có cú pháp hợp lệ trong phiên bản Python mới hơn, nhưng không hợp lệ trong phiên bản bạn đang viết. Một ví dụ về đây là cú pháp F-String, không tồn tại trong các phiên bản Python trước 3.6: >>> 8Trong các phiên bản của Python trước 3.6, thông dịch viên không biết gì về cú pháp chuỗi F và sẽ chỉ cung cấp thông báo chung chung. Vấn đề, trong trường hợp này, là mã trông hoàn toàn ổn, nhưng nó được chạy với một phiên bản cũ của Python. Khi nghi ngờ, kiểm tra kỹ phiên bản Python nào mà bạn đang chạy! Cú pháp Python đang tiếp tục phát triển và có một số tính năng mới thú vị được giới thiệu trong Python 3.8:
Nếu bạn muốn thử một số tính năng mới này, thì bạn cần chắc chắn rằng bạn đang làm việc trong môi trường Python 3.8. Nếu không, bạn sẽ nhận được một 1.Python 3.8 cũng cung cấp 39 mới. Bạn có thể thấy cảnh báo này trong các tình huống mà cú pháp hợp lệ nhưng vẫn trông đáng ngờ. Một ví dụ về điều này sẽ là nếu bạn thiếu dấu phẩy giữa hai bộ dữ liệu trong danh sách. Đây sẽ là cú pháp hợp lệ trong các phiên bản Python trước 3,8, nhưng mã sẽ tăng 40 vì một tuple không thể gọi được: 39. You’ll see this warning in situations where the syntax is valid but still looks suspicious. An example of this would be if you were missing a comma between two tuples in a list. This would be valid syntax in Python versions before 3.8, but the code would raise a 40 because a tuple is not callable:>>> 9Điều này 40 có nghĩa là bạn có thể gọi là một tuple giống như một chức năng, đó là những gì mà người phiên dịch Python nghĩ rằng bạn đang làm.Trong Python 3.8, mã này vẫn tăng 40, nhưng bây giờ bạn cũng sẽ thấy một 39 cho biết làm thế nào bạn có thể khắc phục sự cố:>>> 0Thông điệp hữu ích đi kèm với 39 mới thậm chí còn cung cấp một gợi ý ( 45) để chỉ cho bạn đi đúng hướng!Sự kết luậnTrong hướng dẫn này, bạn đã thấy những thông tin mà TraceBack cung cấp cho bạn. Bạn cũng đã thấy nhiều ví dụ phổ biến về cú pháp không hợp lệ trong Python và các giải pháp là gì cho những vấn đề đó. Điều này không chỉ tăng tốc độ công việc của bạn, mà còn giúp bạn trở thành một người đánh giá mã hữu ích hơn! Khi bạn viết mã, hãy cố gắng sử dụng IDE hiểu cú pháp Python và cung cấp phản hồi. Nếu bạn đặt nhiều ví dụ về mã python không hợp lệ từ hướng dẫn này vào một IDE tốt, thì chúng sẽ làm nổi bật các dòng vấn đề trước khi bạn thậm chí có thể thực thi mã của mình. Nhận được một 1 trong khi bạn đang học Python có thể gây khó chịu, nhưng bây giờ bạn biết cách hiểu các thông điệp Traceback và những dạng cú pháp không hợp lệ trong Python mà bạn có thể đưa ra. Lần tới khi bạn nhận được 1, bạn sẽ được trang bị tốt hơn để khắc phục sự cố một cách nhanh chóng! 1 while you’re learning Python can be frustrating, but now you know how to understand traceback messages and what forms of invalid syntax in
Python you might come up against. The next time you get a 1, you’ll be better equipped to fix the problem quickly!Xem bây giờ hướng dẫn này có một khóa học video liên quan được tạo bởi nhóm Python thực sự. Xem cùng với hướng dẫn bằng văn bản để hiểu sâu hơn về sự hiểu biết của bạn: Xác định cú pháp Python không hợp lệ This tutorial has a related video course created by the Real Python team. Watch it together with the written tutorial to deepen your understanding: Identify Invalid Python Syntax Tại sao tôi nhận được cú pháp không hợp lệ trong Python khác?Trong mã Python trong một tệp, không thể có bất kỳ mã nào khác giữa IF và khác.Bạn sẽ thấy cú pháp: Cú pháp không hợp lệ nếu bạn cố gắng tự viết một câu lệnh khác hoặc đặt thêm mã giữa IF và khác trong tệp Python.if you try to write an else statement on its own, or put extra code between the if and the else in a Python file.
Điều gì gây ra cú pháp không hợp lệ?Nguyên nhân của cú pháp: Cú pháp không hợp lệ bị thiếu đại tràng (:) ở cuối một dòng hoặc trộn lẫn các ký hiệu khác.Thiếu dấu ngoặc đơn mở hoặc đóng ((...)), dấu ngoặc ([...]), niềng răng ({...}) hoặc trích dẫn ("...")hoặc biểu hiện.Missing a colon ( : ) at the end of a line or mixing up other symbols. Missing opening or closing parentheses ( ( ... ) ), brackets ( [ ... ] ), braces ( { ... } ), or quotes ( " ... " ) Misspelled or missing keywords or mistyping syntax within a block or expression. |