Hướng dẫn how do i fix the print syntax error in python? - làm cách nào để sửa lỗi cú pháp in trong python?

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

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

>>> len('hello') == 5
True
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 đề.
>>> len('hello') == 5
True
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ể:

  • Xác định cú pháp không hợp lệ trong Pythoninvalid syntax in Python
  • Có ý nghĩa về
    >>> len('hello') == 5
    True
    
    1 Tracebacks
    >>> len('hello') == 5
    True
    
    1
    tracebacks
  • Giải quyết cú pháp không hợp lệ hoặc ngăn chặn hoàn toàn invalid syntax or prevent it altogether

Cú pháp không hợp lệ trong Python

Khi 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

>>> len('hello') == 5
True
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

>>> len('hello') == 5
True
4 và
>>> len('hello') == 5
True
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
>>> len('hello') == 5
True
1.

>>> len('hello') == 5 True 1 Ngoại lệ và TraceBack

Khi 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ệ

>>> len('hello') == 5
True
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:
>>> len('hello') == 5
True
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:

 1# theofficefacts.py
 2ages = {
 3    'pam': 24,
 4    'jim': 24
 5    'michael': 43
 6}
 7print(f'Michael is {ages["michael"]} years old.')

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,

>>> len('hello') == 5
True
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:

$ python theofficefacts.py
File "theofficefacts.py", line 5
    'michael': 43
            ^
SyntaxError: invalid syntax

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

>>> len('hello') == 5
True
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

>>> fro i in range(10):
  File "", line 1
    fro i in range(10):
        ^
SyntaxError: invalid syntax
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

>>> len('hello') == 5
True
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:

  • Tên tệp mà cú pháp không hợp lệ đã gặp phải where the invalid syntax was encountered
  • Số dòng và dòng mã được sao chép trong đó vấn đề đã gặp phải and reproduced line of code where the issue was encountered
  • Một chăm sóc (
    >>> fro i in range(10):
      File "", line 1
        fro i in range(10):
            ^
    SyntaxError: invalid syntax
    
    3) trên dòng bên dưới mã được sao chép, cho bạn thấy điểm trong mã có vấn đề
    on the line below the reproduced code, which shows you the point in the code that has a problem
  • Thông báo lỗi xuất hiện sau loại ngoại lệ
    >>> len('hello') == 5
    True
    
    1, có thể cung cấp thông tin để giúp bạn xác định vấn đề
    that comes after the exception type
    >>> len('hello') == 5
    True
    
    1, which can provide information to help you determine the problem

Trong ví dụ trên, tên tệp được đưa ra là

>>> fro i in range(10):
  File "", line 1
    fro i in range(10):
        ^
SyntaxError: invalid syntax
5, số dòng là 5 và Caret chỉ vào báo giá đóng của khóa từ điển
>>> fro i in range(10):
  File "", line 1
    fro i in range(10):
        ^
SyntaxError: invalid syntax
6. TraceBack
>>> len('hello') == 5
True
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

>>> len('hello') == 5
True
1 nhưng có tên khác nhau:

  1. >>> fro i in range(10):
      File "", line 1
        fro i in range(10):
            ^
    SyntaxError: invalid syntax
    
    9
  2. >>> for i range(10):
      File "", line 1
        for i range(10):
                  ^
    SyntaxError: invalid syntax
    
    0

Những ngoại lệ này đều được thừa hưởng từ lớp

>>> len('hello') == 5
True
1, nhưng họ là những trường hợp đặc biệt trong đó liên quan đến thụt lề. Một
>>> fro i in range(10):
  File "", line 1
    fro i in range(10):
        ^
SyntaxError: invalid syntax
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
>>> for i range(10):
  File "", line 1
    for i range(10):
              ^
SyntaxError: invalid syntax
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ến

Khi bạn lần đầu tiên gặp

>>> len('hello') == 5
True
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à
>>> len('hello') == 5
True
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 "", 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à

>>> len('hello') == 5
True
1 Tracebacks:

>>>

>>> len('hello') = 5
  File "", line 1
SyntaxError: can't assign to function call

>>> 'foo' = 1
  File "", line 1
SyntaxError: can't assign to literal

>>> 1 = 'foo'
  File "", line 1
SyntaxError: can't assign to literal

Ví dụ đầu tiên cố gắng gán giá trị

>>> for i range(10):
  File "", line 1
    for i range(10):
              ^
SyntaxError: invalid syntax
8 cho cuộc gọi
>>> for i range(10):
  File "", line 1
    for i range(10):
              ^
SyntaxError: invalid syntax
9. Thông điệp
>>> len('hello') == 5
True
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 (

>>> for i range(10):
  File "", line 1
    for i range(10):
              ^
SyntaxError: invalid syntax
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:

>>>

>>> len('hello') == 5
True

Ví dụ đầu tiên cố gắng gán giá trị

>>> for i range(10):
  File "", line 1
    for i range(10):
              ^
SyntaxError: invalid syntax
8 cho cuộc gọi
>>> for i range(10):
  File "", line 1
    for i range(10):
              ^
SyntaxError: invalid syntax
9. Thông điệp
>>> len('hello') == 5
True
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 (

>>> for i range(10):
  File "", line 1
    for i range(10):
              ^
SyntaxError: invalid syntax
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.

  1. Viết sai chính tả, thiếu hoặc lạm dụng từ khóa Python a keyword
  2. 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. a keyword
  3. Có ba cách phổ biến mà bạn có thể sử dụng từ khóa: a keyword

Viết sai từ một từ khóamisspell a keyword in your Python code, then you’ll get a

>>> len('hello') == 5
True
1. For example, here’s what happens if you spell the keyword
>>> names = ['pam', 'jim', 'michael']
>>> if 'jim' in names:
...     print('jim found')
...     break
...
  File "", line 3
SyntaxError: 'break' outside loop

>>> if 'jim' in names:
...     print('jim found')
...     continue
...
  File "", line 3
SyntaxError: 'continue' not properly in loop
3 incorrectly:

>>>

>>> fro i in range(10):
  File "", line 1
    fro i in range(10):
        ^
SyntaxError: invalid syntax

Ví dụ đầu tiên cố gắng gán giá trị

>>> for i range(10):
  File "", line 1
    for i range(10):
              ^
SyntaxError: invalid syntax
8 cho cuộc gọi
>>> for i range(10):
  File "", line 1
    for i range(10):
              ^
SyntaxError: invalid syntax
9. Thông điệp
>>> len('hello') == 5
True
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:

>>>

>>> for i range(10):
  File "", line 1
    for i range(10):
              ^
SyntaxError: invalid syntax

Ví dụ đầu tiên cố gắng gán giá trị

>>> for i range(10):
  File "", line 1
    for i range(10):
              ^
SyntaxError: invalid syntax
8 cho cuộc gọi
>>> for i range(10):
  File "", line 1
    for i range(10):
              ^
SyntaxError: invalid syntax
9. Thông điệp
>>> len('hello') == 5
True
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

>>> names = ['pam', 'jim', 'michael']
>>> if 'jim' in names:
...     print('jim found')
...     break
...
  File "", line 3
SyntaxError: 'break' outside loop

>>> if 'jim' in names:
...     print('jim found')
...     continue
...
  File "", line 3
SyntaxError: 'continue' not properly in loop
7 or
>>> names = ['pam', 'jim', 'michael']
>>> if 'jim' in names:
...     print('jim found')
...     break
...
  File "", line 3
SyntaxError: 'break' outside loop

>>> if 'jim' in names:
...     print('jim found')
...     continue
...
  File "", line 3
SyntaxError: 'continue' not properly in loop
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:

>>>

>>> names = ['pam', 'jim', 'michael']
>>> if 'jim' in names:
...     print('jim found')
...     break
...
  File "", line 3
SyntaxError: 'break' outside loop

>>> if 'jim' in names:
...     print('jim found')
...     continue
...
  File "", line 3
SyntaxError: 'continue' not properly in loop

Ví dụ đầu tiên cố gắng gán giá trị

>>> for i range(10):
  File "", line 1
    for i range(10):
              ^
SyntaxError: invalid syntax
8 cho cuộc gọi
>>> for i range(10):
  File "", line 1
    for i range(10):
              ^
SyntaxError: invalid syntax
9. Thông điệp
>>> len('hello') == 5
True
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 (
>>> for i range(10):
  File "", line 1
    for i range(10):
              ^
SyntaxError: invalid syntax
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:

Viết sai từ một từ khóaThiếu một từ khóaLạm dụng một từ khóa
Nếu bạn viết sai một từ khóa trong mã Python của mình, thì bạn sẽ nhận được
>>> len('hello') == 5
True
1. Ví dụ: ở đây, những gì xảy ra nếu bạn đánh vần từ khóa
>>> names = ['pam', 'jim', 'michael']
>>> if 'jim' in names:
...     print('jim found')
...     break
...
  File "", line 3
SyntaxError: 'break' outside loop

>>> if 'jim' in names:
...     print('jim found')
...     continue
...
  File "", line 3
SyntaxError: 'continue' not properly in loop
3 không chính xác:
Tin nhắn đọc
>>> names = ['pam', 'jim', 'michael']
>>> if 'jim' in names:
...     print('jim found')
...     break
...
  File "", line 3
SyntaxError: 'break' outside loop

>>> if 'jim' in names:
...     print('jim found')
...     continue
...
  File "", line 3
SyntaxError: 'continue' not properly in loop
4, nhưng điều đó không hữu ích lắm. Traceback chỉ ra nơi đầu tiên mà Python có thể phát hiện ra rằng có gì đó không ổn. Để khắc phục loại lỗi này, hãy đảm bảo rằng tất cả các từ khóa Python của bạn được đánh vần chính xác.
Một vấn đề phổ biến khác với các từ khóa là khi bạn bỏ lỡ chúng hoàn toàn:
Một lần nữa, thông điệp ngoại lệ không phải là hữu ích, nhưng TraceBack không cố gắng hướng bạn đi đúng hướng. Nếu bạn di chuyển trở lại từ CARET, thì bạn có thể thấy rằng từ khóa
>>> names = ['pam', 'jim', 'michael']
>>> if 'jim' in names:
...     print('jim found')
...     break
...
  File "", line 3
SyntaxError: 'break' outside loop

>>> if 'jim' in names:
...     print('jim found')
...     continue
...
  File "", line 3
SyntaxError: 'continue' not properly in loop
5 bị thiếu từ cú pháp vòng lặp
>>> names = ['pam', 'jim', 'michael']
>>> if 'jim' in names:
...     print('jim found')
...     break
...
  File "", line 3
SyntaxError: 'break' outside loop

>>> if 'jim' in names:
...     print('jim found')
...     continue
...
  File "", line 3
SyntaxError: 'continue' not properly in loop
3.
Bạn cũng có thể sử dụng sai một từ khóa Python được bảo vệ. Hãy nhớ rằng, các từ khóa chỉ được phép được sử dụng trong các tình huống cụ thể. Nếu bạn sử dụng chúng không chính xác, thì bạn sẽ có cú pháp không hợp lệ trong mã Python của mình. Một ví dụ phổ biến về điều này là việc sử dụng
>>> names = ['pam', 'jim', 'michael']
>>> if 'jim' in names:
...     print('jim found')
...     break
...
  File "", line 3
SyntaxError: 'break' outside loop

>>> if 'jim' in names:
...     print('jim found')
...     continue
...
  File "", line 3
SyntaxError: 'continue' not properly in loop
7 hoặc
>>> names = ['pam', 'jim', 'michael']
>>> if 'jim' in names:
...     print('jim found')
...     break
...
  File "", line 3
SyntaxError: 'break' outside loop

>>> if 'jim' in names:
...     print('jim found')
...     continue
...
  File "", line 3
SyntaxError: 'continue' not properly in loop
8 bên ngoài một vòng lặp. Điều này có thể dễ dàng xảy ra trong quá trình phát triển khi bạn thực hiện mọi thứ và tình cờ di chuyển logic bên ngoài một vòng lặp:
Ở đây, Python làm rất tốt khi nói với bạn chính xác những gì sai. Các tin nhắn
>>> names = ['pam', 'jim', 'michael']
>>> if 'jim' in names:
...     print('jim found')
...     break
...
  File "", line 3
SyntaxError: 'break' outside loop

>>> if 'jim' in names:
...     print('jim found')
...     continue
...
  File "", line 3
SyntaxError: 'continue' not properly in loop
9 và
>>> pass = True
  File "", line 1
    pass = True
         ^
SyntaxError: invalid syntax

>>> def pass():
  File "", line 1
    def pass():
           ^
SyntaxError: invalid syntax
0 giúp bạn tìm ra chính xác những việc cần làm. Nếu mã này nằm trong một tập tin, thì Python cũng sẽ có Caret trỏ ngay từ khóa sử dụng sai.

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:

import keyword
print(keyword.kwlist)

import keyword
print(keyword.kwlist)
2 cũng cung cấp
import keyword
print(keyword.kwlist)
3 hữu ích. Nếu bạn chỉ cần một cách nhanh chóng để kiểm tra biến
>>> pass = True
  File "", line 1
    pass = True
         ^
SyntaxError: invalid syntax

>>> def pass():
  File "", line 1
    def pass():
           ^
SyntaxError: invalid syntax
1, thì bạn có thể sử dụng một liner sau:

>>>

>>> import keyword; keyword.iskeyword('pass')
True

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ẫn

Thô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:

>>>

$ python theofficefacts.py
File "theofficefacts.py", line 5
    'michael': 43
            ^
SyntaxError: invalid syntax
0

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.

  1. Thiếu dấu ngoặc đơn, dấu ngoặc và trích dẫn the single quote with a backslash (
    import keyword
    print(keyword.kwlist)
    
    6)
  2. Thô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: the entire string in double-quotes instead (
    import keyword
    print(keyword.kwlist)
    
    7)

Ở đây, Traceback chỉ vào mã không hợp lệ trong đó có một

import keyword
print(keyword.kwlist)
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:

>>>

$ python theofficefacts.py
File "theofficefacts.py", line 5
    'michael': 43
            ^
SyntaxError: invalid syntax
1

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ẫn

$ python theofficefacts.py
File "theofficefacts.py", line 5
    'michael': 43
            ^
SyntaxError: invalid syntax
2

Thô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:

$ python theofficefacts.py
File "theofficefacts.py", line 5
    'michael': 43
            ^
SyntaxError: invalid syntax
3

Ở đây, Traceback chỉ vào mã không hợp lệ trong đó có một

import keyword
print(keyword.kwlist)
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 (

import keyword
print(keyword.kwlist)
6)

Bao quanh toàn bộ chuỗi trong các trình điều khiển kép thay thế (

import keyword
print(keyword.kwlist)
7)

$ python theofficefacts.py
File "theofficefacts.py", line 5
    'michael': 43
            ^
SyntaxError: invalid syntax
4

Mộ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:

$ python theofficefacts.py
File "theofficefacts.py", line 5
    'michael': 43
            ^
SyntaxError: invalid syntax
5

Lần này, CARET trong Traceback chỉ ra mã vấn đề. Thông điệp

>>> len('hello') == 5
True
1,
import keyword
print(keyword.kwlist)
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 (
>>> import keyword; keyword.iskeyword('pass')
True
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:

$ python theofficefacts.py
File "theofficefacts.py", line 5
    'michael': 43
            ^
SyntaxError: invalid syntax
6

Ở đây, tham chiếu đến từ điển

>>> import keyword; keyword.iskeyword('pass')
True
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:

$ python theofficefacts.py
File "theofficefacts.py", line 5
    'michael': 43
            ^
SyntaxError: invalid syntax
7

Python 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

>>> import keyword; keyword.iskeyword('pass')
True
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

>>> import keyword; keyword.iskeyword('pass')
True
3:

>>>

$ python theofficefacts.py
File "theofficefacts.py", line 5
    'michael': 43
            ^
SyntaxError: invalid syntax
8

Điều mà xảy ra ở đây là Python nghĩ rằng danh sách này chứa ba yếu tố:

>>> import keyword; keyword.iskeyword('pass')
True
4,
>>> import keyword; keyword.iskeyword('pass')
True
5 và
>>> import keyword; keyword.iskeyword('pass')
True
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
>>> import keyword; keyword.iskeyword('pass')
True
7 khỏi
>>> import keyword; keyword.iskeyword('pass')
True
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:

>>>

$ python theofficefacts.py
File "theofficefacts.py", line 5
    'michael': 43
            ^
SyntaxError: invalid syntax
9

Bạn có thể sử dụng

$ python theofficefacts.py
File "theofficefacts.py", line 5
    'michael': 43
            ^
SyntaxError: invalid syntax
05 để xác định từ điển nếu cú ​​pháp đó hữu ích hơn.

Sử dụng sai thụt

Có hai lớp phụ của

>>> len('hello') == 5
True
1 giải quyết các vấn đề thụt vào các vấn đề cụ thể:

  1. >>> fro i in range(10):
      File "", line 1
        fro i in range(10):
            ^
    SyntaxError: invalid syntax
    
    9
  2. >>> for i range(10):
      File "", line 1
        for i range(10):
                  ^
    SyntaxError: invalid syntax
    
    0

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

>>> fro i in range(10):
  File "", line 1
    fro i in range(10):
        ^
SyntaxError: invalid syntax
9 nếu có một dòng trong một khối mã có số lượng không gian sai:
>>> fro i in range(10):
  File "", line 1
    fro i in range(10):
        ^
SyntaxError: invalid syntax
9
if there’s a line in a code block that has the wrong number of spaces:

>>> len('hello') = 5
  File "", line 1
SyntaxError: can't assign to function call

>>> 'foo' = 1
  File "", line 1
SyntaxError: can't assign to literal

>>> 1 = 'foo'
  File "", line 1
SyntaxError: can't assign to literal
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

>>> names = ['pam', 'jim', 'michael']
>>> if 'jim' in names:
...     print('jim found')
...     break
...
  File "", line 3
SyntaxError: 'break' outside loop

>>> if 'jim' in names:
...     print('jim found')
...     continue
...
  File "", line 3
SyntaxError: 'continue' not properly in loop
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

$ python theofficefacts.py
File "theofficefacts.py", line 5
    'michael': 43
            ^
SyntaxError: invalid syntax
13 dự định sau vòng lặp
>>> names = ['pam', 'jim', 'michael']
>>> if 'jim' in names:
...     print('jim found')
...     break
...
  File "", line 3
SyntaxError: 'break' outside loop

>>> if 'jim' in names:
...     print('jim found')
...     continue
...
  File "", line 3
SyntaxError: 'continue' not properly in loop
3 hoặc bên trong khối vòng
>>> names = ['pam', 'jim', 'michael']
>>> if 'jim' in names:
...     print('jim found')
...     break
...
  File "", line 3
SyntaxError: 'break' outside loop

>>> if 'jim' in names:
...     print('jim found')
...     continue
...
  File "", line 3
SyntaxError: 'continue' not properly in loop
3? Khi bạn chạy mã trên, bạn sẽ thấy lỗi sau:

>>> len('hello') = 5
  File "", line 1
SyntaxError: can't assign to function call

>>> 'foo' = 1
  File "", line 1
SyntaxError: can't assign to literal

>>> 1 = 'foo'
  File "", line 1
SyntaxError: can't assign to literal
1

Mặc dù dấu vết trông rất giống với dấu vết

>>> len('hello') == 5
True
1, nhưng nó thực sự là một
>>> fro i in range(10):
  File "", line 1
    fro i in range(10):
        ^
SyntaxError: invalid syntax
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,
$ python theofficefacts.py
File "theofficefacts.py", line 5
    'michael': 43
            ^
SyntaxError: invalid syntax
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

>>> len('hello') == 5
True
1 là
>>> for i range(10):
  File "", line 1
    for i range(10):
              ^
SyntaxError: invalid syntax
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!
>>> for i range(10):
  File "", line 1
    for i range(10):
              ^
SyntaxError: invalid syntax
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 đề:

>>> len('hello') = 5
  File "", line 1
SyntaxError: can't assign to function call

>>> 'foo' = 1
  File "", line 1
SyntaxError: can't assign to literal

>>> 1 = 'foo'
  File "", line 1
SyntaxError: can't assign to literal
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:

>>> len('hello') = 5
  File "", line 1
SyntaxError: can't assign to function call

>>> 'foo' = 1
  File "", line 1
SyntaxError: can't assign to literal

>>> 1 = 'foo'
  File "", line 1
SyntaxError: can't assign to literal
3

Lư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:

  • Nếu chiều rộng tab là 4, thì câu lệnh
    >>> pass = True
      File "", line 1
        pass = True
             ^
    SyntaxError: invalid syntax
    
    >>> def pass():
      File "", line 1
        def pass():
               ^
    SyntaxError: invalid syntax
    
    9 sẽ trông giống như nó bên ngoài vòng lặp
    >>> names = ['pam', 'jim', 'michael']
    >>> if 'jim' in names:
    ...     print('jim found')
    ...     break
    ...
      File "", line 3
    SyntaxError: 'break' outside loop
    
    >>> if 'jim' in names:
    ...     print('jim found')
    ...     continue
    ...
      File "", line 3
    SyntaxError: 'continue' not properly in loop
    
    3. Bảng điều khiển sẽ in
    $ python theofficefacts.py
    File "theofficefacts.py", line 5
        'michael': 43
                ^
    SyntaxError: invalid syntax
    
    23 ở cuối vòng lặp.
    , then the
    >>> pass = True
      File "", line 1
        pass = True
             ^
    SyntaxError: invalid syntax
    
    >>> def pass():
      File "", line 1
        def pass():
               ^
    SyntaxError: invalid syntax
    
    9 statement will look like it’s outside the
    >>> names = ['pam', 'jim', 'michael']
    >>> if 'jim' in names:
    ...     print('jim found')
    ...     break
    ...
      File "", line 3
    SyntaxError: 'break' outside loop
    
    >>> if 'jim' in names:
    ...     print('jim found')
    ...     continue
    ...
      File "", line 3
    SyntaxError: 'continue' not properly in loop
    
    3 loop. The console will print
    $ python theofficefacts.py
    File "theofficefacts.py", line 5
        'michael': 43
                ^
    SyntaxError: invalid syntax
    
    23 at the end of the loop.
  • Nếu chiều rộng tab là 8, là tiêu chuẩn cho nhiều hệ thống, thì câu lệnh
    >>> pass = True
      File "", line 1
        pass = True
             ^
    SyntaxError: invalid syntax
    
    >>> def pass():
      File "", line 1
        def pass():
               ^
    SyntaxError: invalid syntax
    
    9 sẽ trông giống như nó bên trong vòng lặp
    >>> names = ['pam', 'jim', 'michael']
    >>> if 'jim' in names:
    ...     print('jim found')
    ...     break
    ...
      File "", line 3
    SyntaxError: 'break' outside loop
    
    >>> if 'jim' in names:
    ...     print('jim found')
    ...     continue
    ...
      File "", line 3
    SyntaxError: 'continue' not properly in loop
    
    3. Bảng điều khiển sẽ in
    $ python theofficefacts.py
    File "theofficefacts.py", line 5
        'michael': 43
                ^
    SyntaxError: invalid syntax
    
    23 sau mỗi số.
    , which is standard for a lot of systems, then the
    >>> pass = True
      File "", line 1
        pass = True
             ^
    SyntaxError: invalid syntax
    
    >>> def pass():
      File "", line 1
        def pass():
               ^
    SyntaxError: invalid syntax
    
    9 statement will look like it’s inside the
    >>> names = ['pam', 'jim', 'michael']
    >>> if 'jim' in names:
    ...     print('jim found')
    ...     break
    ...
      File "", line 3
    SyntaxError: 'break' outside loop
    
    >>> if 'jim' in names:
    ...     print('jim found')
    ...     continue
    ...
      File "", line 3
    SyntaxError: 'continue' not properly in loop
    
    3 loop. The console will print
    $ python theofficefacts.py
    File "theofficefacts.py", line 5
        'michael': 43
                ^
    SyntaxError: invalid syntax
    
    23 after each number.
  • Nếu chiều rộng tab là 3, thì câu lệnh
    >>> pass = True
      File "", line 1
        pass = True
             ^
    SyntaxError: invalid syntax
    
    >>> def pass():
      File "", line 1
        def pass():
               ^
    SyntaxError: invalid syntax
    
    9 nhìn ra ngoài. Trong trường hợp này, dòng 5 không phù hợp với bất kỳ cấp độ thụt nào.
    , then the
    >>> pass = True
      File "", line 1
        pass = True
             ^
    SyntaxError: invalid syntax
    
    >>> def pass():
      File "", line 1
        def pass():
               ^
    SyntaxError: invalid syntax
    
    9 statement looks out of place. In this case, line 5 doesn’t match up with any indentation level.

Khi bạn chạy mã, bạn sẽ nhận được lỗi sau và theo dõi:

>>> len('hello') = 5
  File "", line 1
SyntaxError: can't assign to function call

>>> 'foo' = 1
  File "", line 1
SyntaxError: can't assign to literal

>>> 1 = 'foo'
  File "", line 1
SyntaxError: can't assign to literal
4

Lưu ý

>>> for i range(10):
  File "", line 1
    for i range(10):
              ^
SyntaxError: invalid syntax
0 thay vì thông thường
>>> len('hello') == 5
True
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

$ python theofficefacts.py
File "theofficefacts.py", line 5
    'michael': 43
            ^
SyntaxError: invalid syntax
23 sau khi vòng lặp
>>> names = ['pam', 'jim', 'michael']
>>> if 'jim' in names:
...     print('jim found')
...     break
...
  File "", line 3
SyntaxError: 'break' outside loop

>>> if 'jim' in names:
...     print('jim found')
...     continue
...
  File "", line 3
SyntaxError: 'continue' not properly in loop
3 kết thúc.

Xác định và gọi các chức năng

Bạ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

>>> len('hello') == 5
True
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:

>>>

>>> len('hello') = 5
  File "", line 1
SyntaxError: can't assign to function call

>>> 'foo' = 1
  File "", line 1
SyntaxError: can't assign to literal

>>> 1 = 'foo'
  File "", line 1
SyntaxError: can't assign to literal
5

Traceback ở đâ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

>>> len('hello') == 5
True
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
>>> len('hello') == 5
True
1:

>>>

>>> len('hello') = 5
  File "", line 1
SyntaxError: can't assign to function call

>>> 'foo' = 1
  File "", line 1
SyntaxError: can't assign to literal

>>> 1 = 'foo'
  File "", line 1
SyntaxError: can't assign to literal
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

>>> pass = True
  File "", line 1
    pass = True
         ^
SyntaxError: invalid syntax

>>> def pass():
  File "", line 1
    def pass():
           ^
SyntaxError: invalid syntax
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:

>>>

>>> len('hello') = 5
  File "", line 1
SyntaxError: can't assign to function call

>>> 'foo' = 1
  File "", line 1
SyntaxError: can't assign to literal

>>> 1 = 'foo'
  File "", line 1
SyntaxError: can't assign to literal
7

Đây là một trong những ví dụ mà thông báo lỗi được cung cấp với

>>> len('hello') == 5
True
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
>>> pass = True
  File "", line 1
    pass = True
         ^
SyntaxError: invalid syntax

>>> def pass():
  File "", line 1
    def pass():
           ^
SyntaxError: invalid syntax
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:

>>>

>>> len('hello') = 5
  File "", line 1
SyntaxError: can't assign to function call

>>> 'foo' = 1
  File "", line 1
SyntaxError: can't assign to literal

>>> 1 = 'foo'
  File "", line 1
SyntaxError: can't assign to literal
8

Trong 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:

  • Toán tử Walrus (Biểu thức chuyển nhượng)
  • Cú pháp F-String để gỡ lỗi
  • Đối số chỉ có vị trí

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

>>> len('hello') == 5
True
1.

Python 3.8 cũng cung cấp

$ python theofficefacts.py
File "theofficefacts.py", line 5
    'michael': 43
            ^
SyntaxError: invalid syntax
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
$ python theofficefacts.py
File "theofficefacts.py", line 5
    'michael': 43
            ^
SyntaxError: invalid syntax
40 vì một tuple không thể gọi được:
$ python theofficefacts.py
File "theofficefacts.py", line 5
    'michael': 43
            ^
SyntaxError: invalid syntax
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
$ python theofficefacts.py
File "theofficefacts.py", line 5
    'michael': 43
            ^
SyntaxError: invalid syntax
40 because a tuple is not callable:

>>>

>>> len('hello') = 5
  File "", line 1
SyntaxError: can't assign to function call

>>> 'foo' = 1
  File "", line 1
SyntaxError: can't assign to literal

>>> 1 = 'foo'
  File "", line 1
SyntaxError: can't assign to literal
9

Điều này

$ python theofficefacts.py
File "theofficefacts.py", line 5
    'michael': 43
            ^
SyntaxError: invalid syntax
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

$ python theofficefacts.py
File "theofficefacts.py", line 5
    'michael': 43
            ^
SyntaxError: invalid syntax
40, nhưng bây giờ bạn cũng sẽ thấy một
$ python theofficefacts.py
File "theofficefacts.py", line 5
    'michael': 43
            ^
SyntaxError: invalid syntax
39 cho biết làm thế nào bạn có thể khắc phục sự cố:

>>>

>>> len('hello') == 5
True
0

Thông điệp hữu ích đi kèm với

$ python theofficefacts.py
File "theofficefacts.py", line 5
    'michael': 43
            ^
SyntaxError: invalid syntax
39 mới thậm chí còn cung cấp một gợi ý (
$ python theofficefacts.py
File "theofficefacts.py", line 5
    'michael': 43
            ^
SyntaxError: invalid syntax
45) để chỉ cho bạn đi đúng hướng!

Sự kết luận

Trong 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

>>> len('hello') == 5
True
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
>>> len('hello') == 5
True
1, bạn sẽ được trang bị tốt hơn để khắc phục sự cố một cách nhanh chóng!
>>> len('hello') == 5
True
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
>>> len('hello') == 5
True
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 nó hiển thị lỗi cú pháp?

Lỗi cú pháp là lỗi trong mã nguồn, chẳng hạn như lỗi chính tả và dấu câu, nhãn không chính xác, v.v., điều này gây ra thông báo lỗi được tạo bởi trình biên dịch.Chúng xuất hiện trong một cửa sổ lỗi riêng biệt, với loại lỗi và số dòng được chỉ định để nó có thể được sửa trong cửa sổ chỉnh sửa.mistakes in the source code, such as spelling and punctuation errors, incorrect labels, and so on, which cause an error message to be generated by the compiler. These appear in a separate error window, with the error type and line number indicated so that it can be corrected in the edit window.

Chúng ta có thể xử lý lỗi cú pháp trong Python không?

Khoa học dữ liệu thực tế bằng cách sử dụng Python một cú pháp xảy ra bất cứ khi nào trình phân tích cú pháp tìm thấy mã nguồn mà nó không hiểu.Điều này có thể là trong khi nhập một mô -đun, gọi EXEC hoặc gọi eval ().Các thuộc tính của ngoại lệ có thể được sử dụng để tìm chính xác phần nào của văn bản đầu vào gây ra ngoại lệ.

Lỗi cú pháp trong Python với ví dụ là gì?

Lỗi cú pháp là những sai lầm trong việc sử dụng ngôn ngữ Python, và tương tự như các lỗi chính tả hoặc ngữ pháp trong một ngôn ngữ như tiếng Anh: ví dụ, câu bạn có uống trà không?Không có ý nghĩa - nó bị thiếu một động từ.Lỗi cú pháp Python phổ biến bao gồm: bỏ đi một từ khóa.mistakes in the use of the Python language, and are analogous to spelling or grammar mistakes in a language like English: for example, the sentence Would you some tea? does not make sense – it is missing a verb. Common Python syntax errors include: leaving out a keyword.