Trả về cú pháp không hợp lệ python

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 đã làm quen với Python với nền tảng chắc chắn về một ngôn ngữ lập trình khác, bạn có thể gặp phải 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
1khi 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ụ biến 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 đề

Đến cuối hướng dẫn này, bạn sẽ có thể

  • Xác định không hợp lệ cú pháp trong Python
  • Tạo cảm giác truy cập 
    >>> len('hello') == 5
    True
    
    1ngược
  • Giải pháp quyết định không hợp lệ hoặc ngăn chặn nó hoàn toàn

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

Khi bạn chạy mã Python của mình, thông tin giao dịch trước sẽ phân tích cú pháp của nó để chuyển nó thành mã byte Python, mã này sau đó sẽ thực thi. Trình thông dịch sẽ tìm thấy bất kỳ cú pháp không hợp lệ nào trong Python trong giai đoạn đầu tiên của quá trình thực thi chương trình, còn được gọi là giai đoạn phân tích cú pháp. Nếu trình thông dịch không thể phân tích cú pháp mã Python của bạn thành công, 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 để bạn biết lỗi xảy ra ở đâu

Khi bạn học Python lần đầu tiên, có thể khó chịu khi nhận được một 

>>> len('hello') == 5
True
1. Python sẽ cố gắng giúp bạn xác định vị trí cú pháp không hợp lệ nằm trong mã của bạn, nhưng zzztraceback nó cung cấp có thể hơi khó hiểu. Đôi khi, mã mà con trỏ của nó đến là hoàn toàn tốt

Lưu ý. Nếu mã của bạn đúng về mặt cú pháp thì bạn có thể nhận được các ngoại lệ khác không phải là 

>>> len('hello') == 5
True
1. Để tìm hiểu thêm về các ngoại lệ khác của Python và cách xử lý chúng, hãy xem Ngoại lệ Python. Giới thiệu

Bạn không thể xử lý cú pháp không hợp lệ trong Python như các trường hợp ngoại lệ khác. Ngay cả khi bạn đã cố gắng bao bọc một 

>>> len('hello') == 5
True
5và 
>>> len('hello') == 5
True
6chặn xung quanh mã bằng cú pháp không hợp lệ, bạn vẫn thấy trình thông dịch tăng một 
>>> len('hello') == 5
True
1

 

Loại bỏ các quảng cáo

>>> len('hello') == 5 True 1 Ngoại lệ và Truy nguyên

Khi thông báo dịch vụ gặp cú pháp không hợp lệ trong mã Python, nó sẽ đưa ra một 

>>> len('hello') == 5
True
1 lỗi và cung cấp truy xuất với một số thông tin hữu ích để giúp bạn gỡ lỗi. Đây là một số mã chứa cú pháp không hợp lệ trong 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 màu đen ở dòng 4. Thứ hai mục nhập _____100, 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

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

Lưu ý rằng thông báo tìm lại vị trí lỗi ở dòng 5, không phải dòng 4. Trình thông dịch Python đang cố gắng chỉ ra đâu là cú pháp không hợp lệ. Tuy nhiên, nó chỉ có thể thực sự chỉ ra nơi đầu tiên nó nhận thấy một vấn đề. Khi bạn nhận được một truy xuất 

>>> len('hello') == 5
True
1và mã mà truy xuất đang trỏ đến có vẻ ổn, thì bạn sẽ muốn bắt đầu quay lại mã cho đến khi bạn có thể xác định được điều gì sai

Trong ví dụ trên, không có vấn đề gì với việc bỏ qua dấu phẩy, tùy thuộc vào điều gì đứng sau dấu phẩy. Ví dụ, không có vấn đề gì với việc làm thiếu hài hước sau 

>>> len('hello') == 5
True
02dòng 5. Nhưng khi một trình thông dịch gặp điều gì đó không hợp lý, nó chỉ có thể cho bạn điều đầu tiên mà nó phát hiện ra rằng nó không thể hiểu được.

Lưu ý. Hướng dẫn này giả định rằng bạn biết những điều cơ bản của Python của tracebacks. Để tìm hiểu thêm về truy xuất dữ liệu Python và cách đọc chúng, hãy xem Tìm ​​hiểu về truy xuất dữ liệu Python và Khai thác tối đa tính năng truy xuất dữ liệu Python

Có một số yếu tố của truy xuất nguồn gốc 

>>> len('hello') == 5
True
1có 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 gặp phải cú pháp không hợp lệ
  • Number line và line code are copy back place have to the fixed
  • Dấu mũ (
    >>> len('hello') == 5
    True
    
    04) trên dòng bên dưới mã được sao chép, để bạn biết điểm trong mã có vấn đề
  • 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 sự cố

Trong ví dụ trên, tên tệp đã chọn là 

>>> len('hello') == 5
True
06, số dòng là 5 và dấu mũ trỏ đến dấu trích kép của từ điển từ khóa 
>>> len('hello') == 5
True
07. Lệnh truy xuất 
>>> len('hello') == 5
True
1có thể không chỉ đưa ra vấn đề thực tế, mà nó sẽ chỉ ra nơi đầu tiên mà trình thông dịch 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 thích với 

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

  1. >>> len('hello') == 5
    True
    
    10
  2. >>> len('hello') == 5
    True
    
    11

Cả hai ngoại lệ này đều kế thừa từ 

>>> len('hello') == 5
True
1 lớp, nhưng chúng là những trường hợp đặc biệt khi có liên quan đến thụt lề. An 
>>> len('hello') == 5
True
10được nâng lên khi mức độ nhận diện của mã của bạn không khớp với nhau. _______ 211 được nâng cấp khi mã của bạn sử dụng cả tab và dấu cách trong cùng một tệp. Bạn sẽ xem xét kỹ hơn các ngoại lệ này trong phần sau

Các vấn đề về cú pháp thường gặp

Khi bạn gặp phải 

>>> len('hello') == 5
True
1 lần đầu tiên, sẽ rất hữu ích nếu bạn biết lý do tại sao có sự cố và bạn có thể làm gì để chỉnh sửa cú pháp không hợp lệ trong mã Python của mình. Trong các phần bên dưới, bạn sẽ thấy một số lý do khiến biến phổ biến hơn khiến 
>>> len('hello') == 5
True
1có thể tăng lên và cách bạn có thể giải quyết chúng

Applimental Transfer Control ( >>> len('hello') == 5 True 17)

Có một số trường hợp trong Python mà bạn không thể gán các đối tượng. Một số ví dụ đang gán cho các chữ và lời gọi hàm. Trong khối mã bên dưới, bạn có thể thấy một vài ví dụ đang cố gắng thực hiện công việc này và kết quả truy xuất 

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

>>>

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

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

>>> len('hello') == 5
True
19cho 
>>> len('hello') == 5
True
20 cuộc gọi. Các 
>>> len('hello') == 5
True
1thông báo là rất hữu ích trong trường hợp này. Nó cho bạn biết rằng bạn không thể gán giá trị cho một lệnh gọi hàm

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 ký tự. Quy tắc tương tự cũng đúng với các giá trị chữ khác. Một lần nữa, các thông báo theo dõi lại chỉ ra rằng sự cố xảy ra khi bạn cố gắng gán giá trị cho một ký tự

Lưu ý. Các ví dụ về thiếu dòng mã lặp lại và dấu mũ (

>>> len('hello') == 5
True
04) con trỏ đến sự cố trong truy xuất. Ngoại lệ và theo dõi mà bạn thấy sẽ khác khi bạn đang ở trong REPL vì vậy với việc cố gắng thực hiện mã này từ một tệp. Nếu mã này nằm trong một tệp, thì bạn sẽ nhận được dòng mã lặp lại và dấu phụ trỏ đến vấn đề, như bạn đã thấy trong các trường hợp khác trong suốt hướng dẫn này.

Có thể ý kiến ​​của bạn không phải là gán một giá trị cho một lệnh gọi theo nghĩa đen hoặc hàm. Ví dụ. điều này có thể xảy ra nếu bạn vô tình bỏ qua dấu phụ ( 

>>> len('hello') == 5
True
17), điều này sẽ biến bài thành phần được phép so sánh. Một so sánh, như bạn có thể thấy bên dưới, sẽ hợp lệ

>>>

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

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ụ vì một điều gì đó không thể được giao, trước tiên bạn có thể muốn kiểm tra để chắc chắn rằng thay vào câu lệnh đó không phải là biểu thức . Bạn có thể gặp phải vấn đề này khi bạn đang cố gắng chỉ định giá trị cho một từ khóa Python , bạn cũng sẽ đề cập đến vấn đề này trong phần tiếp theo

 

Trả về cú pháp không hợp lệ python

Loại bỏ các quảng cáo

Từ khóa Python sai chính tả, thiếu hoặc sử dụng sai

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 không thể sử dụng làm số nhận dạng, biến số hoặc tên hàm trong mã của mình. Chúng là một phần của ngôn ngữ và chỉ có thể được sử dụng trong ngữ cảnh mà Python cho phép

Có ba cách phổ biến mà bạn có thể sử dụng nhầm từ khóa

  1. Viết sai chính tả một từ khóa
  2. Missing one keyword
  3. Sử dụng sai từ khóa

Nếu bạn viết sai chính tả 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 là những điều sẽ xảy ra nếu bạn đánh vần từ khóa 
>>> len('hello') == 5
True
25không chính xác

>>>

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

Tin nhắn đã đọc 

>>> len('hello') == 5
True
26, nhưng điều đó không hữu ích lắm. Việc truy xuất chỉ ra nơi đầu tiên mà Python có thể phát hiện ra rằng có điều gì đó không ổn. Để giải quyết 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 viết đúng chính tả

Một vấn đề phổ biến khác với các từ khóa là khi bạn hoàn toàn bỏ lỡ chúng

>>>

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

Một lần nữa, thông báo ngoại lệ không phải là hữu ích, nhưng việc theo dõi lại chỉ cố gắng để bạn đi đúng hướng. Nếu bạn di chuyển trở lại từ dấu mũ, thì bạn có thể thấy rằng 

>>> len('hello') == 5
True
27từ khóa bị thiếu trong cú pháp 
>>> len('hello') == 5
True
25 Vòng lặp

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, từ khóa chỉ được phép sử dụng trong những trường hợp 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 

>>> len('hello') == 5
True
29or
>>> len('hello') == 5
True
50 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 đang khai thác mọi thứ và tình cờ chuyển logic ra bên ngoài một vòng lặp

>>>

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

Ở đây, Python thực hiện rất tốt công việc cho bạn biết chính xác điều gì sai. Các thông báo 

>>> len('hello') == 5
True
51và 
>>> len('hello') == 5
True
52 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, thì Python cũng sẽ có dấu mũ trỏ ngay đến từ khóa được sử dụng sai

Một ví dụ khác là nếu bạn cố gắng gán một từ khóa Python cho một biến hoặc sử dụng một từ khóa để xác định một hàm

>>>

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

Khi bạn cố gắng chỉ định một giá trị cho 

>>> len('hello') == 5
True
53 hoặc khi bạn cố gắng xác định một chức năng mới được gọi là 
>>> len('hello') == 5
True
53, bạn sẽ nhận được một 
>>> len('hello') == 5
True
1và thấy lại 
>>> len('hello') == 5
True
56 thông báo

Có thể khó hơn một chút để giải quyết cú pháp không hợp lệ này trong mã Python vì mã trông đẹp từ bên ngoài. Nếu mã của bạn trông ổn định, nhưng bạn vẫn nhận được 

>>> len('hello') == 5
True
1, thì bạn có thể cân nhắc kiểm tra tên biến hoặc tên hàm bạn muốn sử dụng so với danh sách từ khóa cho phiên bản Python mà bạn đang sử dụng

Danh sách các từ khóa được bảo vệ đã thay đổi với mỗi phiên bản Python mới. Ví dụ. trong Python 3. 6, bạn có thể sử dụng 

>>> len('hello') == 5
True
58làm biến tên hoặc hàm tên, nhưng kể từ Python 3. 7, từ đó đã được thêm vào danh sách từ khóa. Bây giờ, nếu bạn cố gắng sử dụng 
>>> len('hello') == 5
True
58làm biến tên hoặc hàm, điều này sẽ gây ra 
>>> len('hello') == 5
True
1 nếu mã của bạn dành cho Python 3. 7 trở lên

Một ví dụ khác về điều này là 

>>> len('hello') == 5
True
81, khác nhau trong Python 2 so với Python 3

Phiên bản

>>> len('hello') == 5
True
81 KiểuCó giá trịPython 2từ khóaKhôngPython 3chức năng hợp lệ

>>> len('hello') == 5
True
81là một từ khóa trong Python 2, vì vậy bạn không thể gán giá trị cho nó. Tuy nhiên, trong Python 3, đó là một hàm tích phân có thể được gán giá trị

Bạn có thể chạy đoạn mã sau để xem danh sách các từ khóa trong bất kỳ phiên bản Python nào bạn đang chạy

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

>>> len('hello') == 5
True
84 cũng cung cấp các quyền hữu ích 
>>> len('hello') == 5
True
85. Nếu bạn chỉ cần một cách nhanh chóng để kiểm tra biến
>>> len('hello') == 5
True
53, thì bạn có thể sử dụng một lớp lót sau

>>>

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

Mã này sẽ nhanh chóng cho bạn biết số nhận định dạng mà bạn đang cố gắng sử dụng phải là từ khóa hay không

 

Trả về cú pháp không hợp lệ python

Loại bỏ các quảng cáo

Missing command command, command command and command quote

Thông thường, nguyên nhân của cú pháp không hợp lệ trong mã Python là lệnh trích xuất, dấu trích đoạn hoặc dấu trích dẫn bị thiếu hoặc không khớp. Chúng có thể khó phát hiện trong các dấu ngoặc đơn lồng nhau rất dài hoặc các khối nhiều dòng dài hơn. Bạn có thể phát hiện các dấu ngoặc kép không khớp hoặc bị thiếu với sự trợ giúp của tính năng theo dõi của Python

>>>

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

Ở đây, dấu vết con trỏ đến mã không hợp lệ, nơi có một 

>>> len('hello') == 5
True
87dấu ngoặc kép đóng sau một dấu ngoặc kép. Để giải quyết vấn đề này, bạn có thể thực hiện một trong hai thay đổi

  1. Thoát khỏi trích dẫn đơn bằng dấu gạch chéo ngược ( 
    >>> len('hello') == 5
    True
    
    88)
  2. Tham toàn bộ chuỗi trong dấu nháy kép thay vì ( 
    >>> len('hello') == 5
    True
    
    89)

Một lỗi phổ biến khác là quên chuỗi đóng. Với cả chuỗi được trích dẫn kép và được trích dẫn đơn, sự cố và truy xuất nguồn gốc đều giống nhau

>>>

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

This times, dấu mũ trong dấu vết con trỏ ngày đến mã cố định. Các 

>>> len('hello') == 5
True
1tin nhắn, 
>>> len('hello') == 5
True
51là một chút cụ thể hơn 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 lại. Để giải quyết vấn đề này, hãy đóng chuỗi bằng một câu trích dẫn phù hợp với câu bạn đã sử dụng để bắt đầu nó. Trong trường hợp này, đó sẽ là một dấu trích dẫn ( 
>>> len('hello') == 5
True
52)

Dấu ghi chú 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

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

Ở đây, tham chiếu đến ________ 653 từ điển bên trong chuỗi f bị thiếu dấu ngoặc kép đóng từ khóa tham chiếu. Process out results as after

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

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 

>>> len('hello') == 5
True
54 cũng cho biết vấn đề là gì. Dấu mũ trong trường hợp này chỉ trỏ đến phần đầu của chuỗi f

Điều này có thể không hữu ích khi dấu mũ con trỏ đến vùng có vấn đề của chuỗi f, nhưng nó sẽ thu hút nơi bạn cần tìm. 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 nơi. Để giải quyết vấn đề này, hãy đảm bảo rằng tất cả các dấu trích dẫn và dấu trích dẫn f-string đều có mặt

Tình hình hầu hết giống nhau đối với dấu ngoặc đơn và dấu ngoặc đơn. Ví dụ. nếu bạn bỏ dấu ngoặc nhọn khỏi danh sách, thì Python sẽ phát hiện ra điều đó và chỉ ra. Tuy nhiên, có một vài biến thể của điều này. First first isbỏ dấu đóng khỏi danh sách

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

Khi bạn chạy mã này, bạn sẽ nhận được thông báo rằng có sự cố với lệnh gọi tới 

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

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

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

>>> len('hello') == 5
True
56, 
>>> len('hello') == 5
True
57, và 
>>> len('hello') == 5
True
58. Python sử dụng khoảng trắng để điều khiển nhóm theo một cách logic, và vì không có dấu phẩy hoặc khung tách 
>>> len('hello') == 5
True
59từ 
>>> len('hello') == 5
True
100, nên Python local u chúng lại với nhau là yếu tố thứ ba trong danh sách

Một biến khác có thể là thêm dấu phẩy vào sau phần tử cuối cùng trong danh sách trong khi vẫn bỏ dấu đóng khung

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

Bây giờ bạn đã nhận được một dấu vết khác

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

Trong ví dụ trước, 

>>> len('hello') == 5
True
59và 
>>> len('hello') == 5
True
100khung được lùi lại với nhau thành một phần tử, nhưng ở đây bạn sẽ thấy dấu phẩy ngăn cách hai phần tử. Bây giờ, lệnh gọi 
>>> len('hello') == 5
True
100được thêm vào để làm phần tử thứ tư của danh sách và Python đến tệp cuối mà không có dấu đóng. Theo dõi lại để bạn biết rằng Python đã đến cuối tệp (EOF), nhưng nó đang mong đợi một thứ khác

Trong ví dụ này, Python mong đợi một dấu đóng dấu (

>>> len('hello') == 5
True
104), nhưng dòng lặp lại và dấu phụ không hữu ích lắm. Python bị thiếu dấu ngoặc và khóa rất khó xác định. Đôi khi điều duy nhất bạn có thể làm là bắt đầu từ dấu mũ và lùi lại phía sau cho đến khi bạn có thể xác định điều gì bị thiếu hoặc sai

 

Trả về cú pháp không hợp lệ python

Loại bỏ các quảng cáo

Sai cú pháp từ điển

Bạn đã thấy trước đó rằng bạn có thể nhận được 

>>> len('hello') == 5
True
1 nếu bạn bỏ qua sự hài hước của một phần tử từ điển. Một cú pháp cú pháp không hợp lệ khác với từ điển Python được sử dụng dấu bằng ( 
>>> len('hello') == 5
True
17) để phân tách các khóa và giá trị, thay vì dấu hai chấm

>>>

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

Một lần nữa, thông báo lỗi này không hữu ích lắm. Tuy nhiên, dòng lặp lại và dấu phụ rất hữu ích. Họ chỉ thẳng vào vấn đề nhân vật

Loại sự cố này thường gặp nếu bạn nhầm lẫn cú pháp Python với cú pháp của các ngôn ngữ lập trình khác. Bạn sẽ thấy điều này nếu bạn nhầm lẫn giữa hành động xác định từ điển với một 

>>> len('hello') == 5
True
107 cuộc gọi cũng như. Để giải quyết vấn đề này, bạn có thể thay thế dấu bằng dấu hai chấm. Bạn cũng có thể chuyển sang sử dụng 
>>> len('hello') == 5
True
107

>>>

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

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

>>> len('hello') == 5
True
107 để định nghĩa từ điển nếu cú ​​pháp đó hữu ích hơn

Sử dụng nhận diện sai

Có hai lớp 

>>> len('hello') == 5
True
1con giải quyết vấn đề nhận được cụ thể

  1. >>> len('hello') == 5
    True
    
    10
  2. >>> len('hello') == 5
    True
    
    11

Trong khi các ngôn ngữ lập trình khác nhau sử dụng dấu trích dẫn để biểu thị các khối mã, thì Python sử dụng khoảng trắng. Điều đó có nghĩa là Python mong đợi khoảng trắng trong mã hoạt động của bạn có thể đoán trước được. Nó sẽ tăng lên 

>>> len('hello') == 5
True
10 nếu có một dòng trong khối mã có khoảng trắng không chính xác

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

Điều này có thể khó tìm thấy, nhưng dòng 5 chỉ được nhận vào 2 khoảng trắng. Nó phải phù hợp với 

>>> len('hello') == 5
True
25câu lệnh, có 4 dấu cách trên. Rất có thể, Python có thể phát hiện ra điều này một cách dễ dàng và sẽ nhanh chóng cho bạn biết vấn đề là gì

Tuy nhiên, cũng có một chút mơ hồ nơi đây. Là 

>>> len('hello') == 5
True
115dòng dự kiến ​​được sau khi các 
>>> len('hello') == 5
True
25 Vòng lặp hoặc bên trong các 
>>> len('hello') == 5
True
25khối vòng?

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

Mặc dù người theo dõi trông rất giống người theo dõi 

>>> len('hello') == 5
True
1, nhưng nó thực sự là một 
>>> len('hello') == 5
True
10. 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 lề của dòng không phù hợp với bất kỳ mức độ thụt lề nào khác. Nói cách khác, 
>>> len('hello') == 5
True
115được thụt lề 2 khoảng trắng, nhưng Python không thể tìm thấy bất kỳ dòng mã nào khác phù hợp với mức độ thụt lề này. Bạn có thể giải quyết vấn đề này một cách nhanh chóng và nhanh chóng bằng cách đảm bảo dòng mã phù hợp với mức độ nhận diện mong đợi

Loại 

>>> len('hello') == 5
True
1còn lại là 
>>> len('hello') == 5
True
11, bạn sẽ thấy bất cứ khi nào có một dòng chứa tab hoặc khoảng trắng cho phần thụt lề của nó, trong khi phần còn lại của tệp chứa dòng kia. Điều này có thể được ẩn cho đến khi Python chỉ ra cho bạn

Nếu tab size của bạn có cùng chiều rộng với khoảng trắng trong mỗi mức thu, thì có thể giống như tất cả các dòng đều ở cùng một mức. Tuy nhiên, nếu một dòng được nhận dấu bằng cách sử dụng dấu cách và dòng còn lại được nhận bằng các tab, thì Python sẽ chỉ ra đây là một vấn đề

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

Tại đây, dòng 5 được nhận dấu bằng một tab thay vì 4 dấu cách. Khối mã này có thể trông hoàn toàn ổn đối với bạn hoặc 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

Tuy nhiên, Python sẽ nhận vấn đề ngay lập tức. Nhưng trước khi bạn chạy mã để xem điều gì Python sẽ cho bạn biết là sai, có thể hữu ích cho bạn khi xem ví dụ về mã trông như thế nào trong các tab cài đặt chiều rộng khác nhau

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

Lưu ý sự khác biệt về hiển thị giữa ba ví dụ trên. Hầu hết mã sử dụng 4 dấu cách cho mỗi mức thụt lề, 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 đặt chiều rộng tab

  • Nếu chiều rộng tab là 4 , thì 
    >>> len('hello') == 5
    True
    
    81câu lệnh sẽ giống như nó nằm ngoài 
    >>> len('hello') == 5
    True
    
    25 vòng lặp. Control panel will in _______1125open the loop
  • Nếu tab chiều rộng là 8 , là tiêu chuẩn cho nhiều hệ thống, thì 
    >>> len('hello') == 5
    True
    
    81câu lệnh sẽ giống như bên trong 
    >>> len('hello') == 5
    True
    
    25 Vòng lặp. Control table will in 
    >>> len('hello') == 5
    True
    
    125sau mỗi số
  • If tab width is 3 , then 
    >>> len('hello') == 5
    True
    
    81câu lệnh có vẻ không đúng chỗ. Trong trường hợp này, dòng 5 không khớp với bất kỳ mức thu nào

Khi bạn chạy mã, bạn sẽ gặp lỗi sau và theo dõi lại

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

Chú ý 

>>> len('hello') == 5
True
11thay 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 rằng có một sự kết hợp giữa các tab và khoảng trắng được sử dụng để nhận lề trong cùng một tệp

Giải pháp cho điều này là làm cho tất cả các dòng trong cùng một tệp mã Python sử dụng tab hoặc dấu cách, nhưng không sử dụng cả hai. Đối với các khối mã ở trên, cách giải quyết sẽ là xóa tab và thay thế bằng 4 khoảng trắng, sẽ có trong 

>>> len('hello') == 5
True
125sau khi 
>>> len('hello') == 5
True
25 Vòng lặp kết thúc

 

Trả về cú pháp không hợp lệ python

Loại bỏ các quảng cáo

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

Bạn có thể gặp phải cú pháp không hợp lệ trong Python khi bạn đang định nghĩa hoặc gọi các hàm. Ví dụ. bạn sẽ thấy 

>>> len('hello') == 5
True
1 nếu bạn sử dụng dấu chấm than thay vì dấu hai chấm ở cuối định nghĩa hàm

>>>

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

Lệnh truy xuất ở đây rất hữu ích, với dấu mũ ngay đến ký tự 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 dấu chấm phẩy cho dấu hai chấm

Ngoài ra, các đối số từ khóa trong cả định nghĩa hàm và lệnh gọi hàm cần phải theo đúng thứ tự. Đối số từ khóa luôn đứng sau đối số vị trí. Việc không sử dụng lệnh này sẽ dẫn đến ______01

>>>

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

Ở đây, một lần nữa, thông báo lỗi rất hữu ích trong công việc cho bạn biết chính xác những gì xảy ra với dòng

Change the Python version

Đôi khi, mã hoạt động hoàn toàn tốt trong phiên bản Python bị hỏng trong phiên bản mới hơn. Điều này là thực hiện 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à 

>>> len('hello') == 5
True
81câu lệnh, chuyển từ một từ khóa trong Python 2 thành một hàm tích hợp sẵn trong Python 3

>>>

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

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

>>> len('hello') == 5
True
1ánh sáng. Nó không chỉ cho bạn biết rằng bạn đang thiếu dấu trích đơn trong 
>>> len('hello') == 5
True
81 cuộc gọi, mà còn cung cấp mã chính xác để giúp bạn chỉnh sửa 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 đang tìm hiểu về cú pháp là 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ề điều nà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
True
08

In the Python version before 3. 6, trình thông dịch không biết gì về chuỗi cú pháp f và sẽ chỉ cung cấp một 

>>> len('hello') == 5
True
56thông báo chung. Trong trường hợp này, vấn đề là mã trong hoàn toàn ổn định, nhưng nó được chạy với phiên bản Python cũ hơn. Khi nghi ngờ, hãy kiểm tra kỹ phiên bản Python 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 thú vị mới được giới thiệu trong Python 3. số 8

  • Toán tử hải mã (signal format)
  • Cú pháp chuỗi F để giải quyết lỗi
  • Vị trí đối số chỉ 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 đảm bảo 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

Trăn 3. 8 cũng cung cấp tính năng mới 

>>> len('hello') == 5
True
141. Bạn sẽ thấy cảnh báo này trong các trường hợp cú pháp hợp lệ nhưng vẫn có vẻ đá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ộ giá trị 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 ____1142vì một tuple không thể gọi được

>>>

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

Điều này 

>>> len('hello') == 5
True
142có nghĩa là bạn không thể gọi một tuple là một hàm, đó là điều mà trình thông dịch Python nghĩ rằng bạn đang làm

Trong Python 3. 8, mã này vẫn tăng 

>>> len('hello') == 5
True
142, nhưng bây giờ bạn cũng sẽ tìm thấy một mã 
>>> len('hello') == 5
True
141để biết cách bạn có thể giải quyết sự cố

>>>

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

Thông báo hữu ích đi kèm với cái mới 

>>> len('hello') == 5
True
141thậm chí còn cung cấp gợi ý ( 
>>> len('hello') == 5
True
147) để chỉ bạn đi đúng hướng

Phần kết luận

Trong hướng dẫn này, bạn đã thấy thông tin mà người theo dõi 

>>> len('hello') == 5
True
1cung 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à giải pháp cho những vấn đề đó là gì. Điều này không chỉ giúp tăng tốc quy trình làm việc của bạn mà còn giúp bạn trở thành người đánh giá mã hữu ích hơn

Khi bạn đang 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ụ 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 các dòng vấn đề trước khi bạn thực hiện mã của mình

>>> len('hello') == 5
True
1Bạn đang học Python trong một thời gian có thể khiến bạn bội thực, nhưng bây giờ bạn đã biết cách hiểu các thông báo tìm lại và các cú pháp dạng cú pháp không hợp lệ trong Python mà bạn có thể gặp phải. Lần tới khi bạn gặp lỗi 
>>> len('hello') == 5
True
1, bạn sẽ được trang bị tốt hơn để giải quyết sự cố một cách nhanh chóng