Python 3.10 có phải là phiên bản mới nhất không?

Chúng tôi sẽ đề cập đến một số bổ sung thú vị nhất cho Python - khớp mẫu cấu trúc, trình quản lý ngữ cảnh được đặt trong ngoặc đơn, nhập nhiều hơn và các thông báo lỗi mới và được cải thiện

Kiểm tra phiên bản video của bài viết ở đây

Kết hợp mô hình cấu trúc

Khớp mẫu cấu trúc là một tính năng đáng kinh ngạc được thêm vào Python — thực sự tuyệt vời

Hãy tưởng tượng một câu lệnh if-else trông như thế này

Logic if-else trong Python 3. 9

Bạn lấy nó và bạn sửa đổi cú pháp để nó giống như thế này

Logic trường hợp khớp trong Python 3. 10

Đó là tuyên bố mới của

from collections import namedtoplo> AttributeError: module 'collections' has no attribute 'namedtoplo'. Did you mean: namedtuple?
1 — tuyệt vời, nhưng không có gì đặc biệt cho đến nay

Điều làm cho câu lệnh

from collections import namedtoplo> AttributeError: module 'collections' has no attribute 'namedtoplo'. Did you mean: namedtuple?
1 trở nên thú vị là một thứ được gọi là khớp mẫu cấu trúc

So khớp mẫu cấu trúc cho phép chúng ta thực hiện logic trường hợp khớp tương tự, nhưng dựa trên việc liệu cấu trúc của đối tượng so sánh có khớp với một mẫu nhất định hay không

Vì vậy, chúng ta hãy định nghĩa hai từ điển, cả hai đều có cấu trúc khác nhau

Chúng tôi xác định dict_a và dict_b — cả hai đều chứa thông tin giống nhau, nhưng trong các cấu trúc từ điển khác nhau

Bây giờ, chúng ta có thể viết một mẫu để khớp với

from collections import namedtoplo> AttributeError: module 'collections' has no attribute 'namedtoplo'. Did you mean: namedtuple?
3 như vậy

Mẫu của dict_a

Và một mẫu để khớp với

from collections import namedtoplo> AttributeError: module 'collections' has no attribute 'namedtoplo'. Did you mean: namedtuple?
4 nữa

Mẫu của dict_b

Nếu chúng ta kết hợp cả hai điều này lại với nhau trong một tuyên bố về tình huống đối sánh, bên cạnh những gì thực sự là một

from collections import namedtoplo> AttributeError: module 'collections' has no attribute 'namedtoplo'. Did you mean: namedtuple?
5/bắt tất cả với
from collections import namedtoplo> AttributeError: module 'collections' has no attribute 'namedtoplo'. Did you mean: namedtuple?
6 — chúng ta sẽ nhận được

Chúng tôi lặp qua cả dict_a và dict_b — cả hai đều khớp với nơi chúng tôi mong đợi nhờ khớp mẫu cấu trúc

Khá mát mẻ phải không? . 22 điểm

Trình quản lý bối cảnh được ngoặc đơn

Một thay đổi nhỏ hơn bắt nguồn từ một thay đổi lớn hơn nhiều đã xuất hiện với Python 3. 9 — trình phân tích cú pháp dựa trên PEG mới

Trình phân tích cú pháp Python trước đó có nhiều hạn chế, điều này đã hạn chế các nhà phát triển Python trong đó họ có thể cho phép cú pháp nào

Trăn 3. Trình phân tích cú pháp dựa trên PEG của 9 đã loại bỏ các rào cản này, về lâu dài có thể dẫn đến cú pháp tinh tế hơn — ví dụ đầu tiên của chúng tôi về thay đổi này là trình quản lý ngữ cảnh được đặt trong ngoặc đơn mới

Trước Python 3. 9, chúng ta có thể viết một cái gì đó như thế này để mở hai [hoặc nhiều] luồng tệp I/O

Trước khi có trình phân tích cú pháp mới, chúng tôi chỉ có thể có hai trình quản lý ngữ cảnh nếu cả hai được giữ trên cùng một dòng

Dòng đầu tiên đó khá dài, thực tế là quá dài. Nhưng do hạn chế của trình phân tích cú pháp, cách duy nhất chúng tôi có thể chia dòng này thành nhiều dòng là sử dụng ký tự tiếp tục dòng

from collections import namedtoplo> AttributeError: module 'collections' has no attribute 'namedtoplo'. Did you mean: namedtuple?
7

Ngoài ra, chúng ta có thể sử dụng ký tự tiếp tục dòng \

Nó hoạt động, nhưng nó không phải Pythonic. Với trình phân tích cú pháp mới, giờ đây chúng tôi có thể chia dòng này thành nhiều dòng bằng cách sử dụng dấu ngoặc đơn như vậy

Với trình phân tích cú pháp mới và được hỗ trợ chính thức kể từ Python 3. 10 — giờ đây chúng ta có thể đặt dấu ngoặc đơn cho trình quản lý bối cảnh của mình

Đó là Pythonic

Bây giờ, trước khi chúng ta tiếp tục — có một điều kỳ lạ nhỏ trong tính năng mới này. Nó không hoàn toàn mới…

Nếu chúng ta viết

Mặc dù không được 'giới thiệu' cho đến khi Python 3. 10, CPython đã chấp nhận thay đổi cú pháp mới nhờ trình phân tích cú pháp PEG mới — vì vậy chúng tôi có một tính năng mới, hoàn toàn tương thích với 3. 9

Trong Python 3. 9 - nó hoạt động. Đó là bởi vì trình phân tích cú pháp mới đã kích hoạt cú pháp này, mặc dù nó không được hỗ trợ chính thức cho đến Python 3. 10

Nhập nhiều hơn

Có nhiều bản cập nhật hơn cho các tính năng gõ của Python, mà tôi đã viết chi tiết hơn ở đây nếu bạn quan tâm

Dễ dàng bổ sung thú vị nhất ở đây là bao gồm một toán tử mới hoạt động giống như logic OR cho các loại, điều mà trước đây chúng ta đã sử dụng phương thức

from collections import namedtoplo> AttributeError: module 'collections' has no attribute 'namedtoplo'. Did you mean: namedtuple?
0 cho

Phương pháp hợp nhất cho các loại trong 3. 9

Bây giờ, chúng ta không cần phải viết

from collections import namedtoplo> AttributeError: module 'collections' has no attribute 'namedtoplo'. Did you mean: namedtuple?
1, và
from collections import namedtoplo> AttributeError: module 'collections' has no attribute 'namedtoplo'. Did you mean: namedtuple?
2 đã được đơn giản hóa thành
from collections import namedtoplo> AttributeError: module 'collections' has no attribute 'namedtoplo'. Did you mean: namedtuple?
3 — trông gọn gàng hơn nhiều

Toán tử hợp cho các loại trong 3. 10

Thông báo lỗi tốt hơn

Hãy nói với tôi rằng bạn đã không nhảy ngay vào Google ngay lần đầu tiên bạn nhìn thấy

SyntaxError: unexpected EOF while parsing

Kết quả số một trong Google khi nhập SyntaxError gợi ý rằng nhiều người trong chúng ta chắc chắn đã làm điều đó vào một thời điểm nào đó

EOF không mong muốn trong khi phân tích cú pháp — một cách nói *đơn giản và tao nhã* mà chúng tôi đã bỏ sót dấu ngoặc đơn

Đó không phải là một thông báo lỗi rõ ràng và Python chứa đầy các thông báo lỗi không lý tưởng. May mắn thay, ai đó đã nhận thấy — và nhiều thông báo trong số này đã được cải thiện đáng kể

Thiếu dấu ngoặc đơn với 3. 9 [trái] và 3. 10 [phải] — bấm vào đây để xem sổ tay chứa cả ba phép so sánh

Chuỗi không được tiết lộ với 3. 9 và 3. 10

Toán tử gán thay vì toán tử so sánh được sử dụng với 3. 9 và 3. 10

Có một vài thay đổi khác được đề cập trong danh sách thay đổi chính thức — nhưng dường như không hiển thị trong quá trình thử nghiệm, bao gồm

from collections import namedtoplo> AttributeError: module 'collections' has no attribute 'namedtoplo'. Did you mean: namedtuple?

Ở đây,

from collections import namedtoplo> AttributeError: module 'collections' has no attribute 'namedtoplo'. Did you mean: namedtuple?
4 vẫn giống như trước đây, nhưng có thêm tên thuộc tính gợi ý —
from collections import namedtoplo> AttributeError: module 'collections' has no attribute 'namedtoplo'. Did you mean: namedtuple?
5 được xác định là một lỗi đánh máy tiềm năng của thuộc tính
from collections import namedtoplo> AttributeError: module 'collections' has no attribute 'namedtoplo'. Did you mean: namedtuple?
6

Theo cách tương tự, chúng tôi thấy sự cải thiện tương tự đối với các tin nhắn

from collections import namedtoplo> AttributeError: module 'collections' has no attribute 'namedtoplo'. Did you mean: namedtuple?
7

from collections import namedtoplo> AttributeError: module 'collections' has no attribute 'namedtoplo'. Did you mean: namedtuple?
0

Có rất nhiều cập nhật khác cho các thông báo lỗi. kiểm tra tất cả chúng ở đây

Vì vậy, chúng là một số tính năng mới quan trọng được giới thiệu với Python 3. 10

Bản phát hành đầy đủ là ngày 4 tháng 10 năm 2021, trong vài tháng qua, tất cả các tính năng đã có sẵn trong một số phiên bản tiền phát hành [do đó bài viết này. ]

Nếu bạn muốn tự mình kiểm tra, 3. 10 có thể được tải xuống từ đây

Tôi hy vọng bạn thích bài viết này. Nếu bạn có bất kỳ câu hỏi nào, hãy cho tôi biết qua Twitter hoặc trong phần bình luận bên dưới. Nếu bạn muốn nhiều nội dung như thế này, tôi cũng đăng trên YouTube

Phiên bản mới nhất của Python là gì?

Trăn 3. 11. 0 , tài liệu được phát hành vào ngày 24 tháng 10 năm 2022.

Phiên bản mới nhất của Python 2022 là gì?

Nhánh chính hiện tại là Python 3 trong tương lai. 12 và là nhánh duy nhất chấp nhận các tính năng mới

Là Python 3. 10 ra mắt chưa?

Trăn 3. 10. 0 được phát hành vào Tháng 10 năm 2021 .

Chủ Đề