Python 3.11 xuất hiện với các cải tiến về hiệu suất, thiết kế lại bộ nhớ đệm và hơn thế nữa

Python

Python là một ngôn ngữ lập trình thông dịch cấp cao với triết lý của nó là nhấn mạnh đến khả năng đọc được mã của nó.

Sau một năm phát triển, phiên bản mới của ngôn ngữ lập trình Python, 3.11 , đã được phát hành. Phiên bản mới này sẽ được hỗ trợ trong một năm rưỡi, sau đó các bản vá lỗi sẽ được phát hành trong ba năm rưỡi tiếp theo để khắc phục các lỗ hổng bảo mật.

Đồng thời, quá trình thử nghiệm alpha của nhánh Python 3.12 cũng bắt đầu (theo lịch trình phát triển mới, công việc trên một nhánh mới bắt đầu năm tháng trước khi nhánh trước đó được phát hành và đạt đến giai đoạn thử nghiệm alpha vào thời điểm phiên bản tiếp theo ra mắt).

Nhánh Python 3.12 sẽ được phát hành alpha trong bảy tháng, trong đó các tính năng mới sẽ được thêm vào và sửa lỗi. Sau đó, thử nghiệm beta sẽ diễn ra trong ba tháng, trong đó việc bổ sung các tính năng mới sẽ bị cấm và sẽ tập trung toàn bộ vào việc sửa lỗi. Hai tháng cuối cùng trước khi ra mắt, chi nhánh sẽ ở trong giai đoạn ứng cử viên ra mắt, tại thời điểm đó, quá trình ổn định cuối cùng sẽ diễn ra.

Các tính năng mới chính của Python 3.11

Phiên bản mới này bao gồm những cải tiến đáng kể nhằm tối ưu hóa hiệu năng . Nhánh mới tích hợp các thay đổi liên quan đến việc tăng tốc và triển khai nội tuyến các lệnh gọi hàm , sử dụng các trình thông dịch nhanh cho các thao tác thông thường, và các tối ưu hóa được phát triển bởi các dự án Cinder và HotPy. Tùy thuộc vào khối lượng công việc, tốc độ thực thi mã tăng từ 10% đến 60%. Trung bình, hiệu năng trên bộ kiểm thử pyperformance tăng 25%.

Cơ chế lưu trữ mã bytecode đã được thiết kế lại , giúp giảm thời gian khởi động trình thông dịch từ 10-15%. Các đối tượng chứa mã bytecode hiện được trình thông dịch cấp phát tĩnh, loại bỏ các bước giải mã bytecode được lấy từ bộ nhớ đệm và chuyển đổi các đối tượng chứa mã bytecode để đặt động trong bộ nhớ.

Chức năng hỗ trợ nhóm ngoại lệ đã được thêm vào , cho phép chương trình tạo và xử lý nhiều ngoại lệ khác nhau cùng một lúc. Các loại ngoại lệ mới, ExceptionGroup và BaseExceptionGroup, được đề xuất để nhóm và kết hợp nhiều ngoại lệ, và biểu thức "except*" đã được thêm vào để phân tách các ngoại lệ trong cùng một nhóm.

Một kiểu dữ liệu đặc biệt có tên LiteralString đã được thêm vào , chỉ có thể chứa các chuỗi ký tự tương thích với kiểu LiteralString (tức là các chuỗi ký tự đơn giản và các chuỗi ký tự thuộc kiểu LiteralString, nhưng không phải các chuỗi ký tự tùy ý hoặc kết hợp thuộc kiểu str). Kiểu LiteralString có thể được sử dụng để giới hạn việc truyền các đối số chuỗi cho các hàm, ngăn chặn việc thay thế tùy ý các phần của chuỗi nơi có thể phát sinh lỗ hổng bảo mật, ví dụ, khi tạo chuỗi cho các truy vấn SQL hoặc lệnh shell.

Ngoài ra, khả năng đánh dấu các phần tử riêng lẻ của từ điển kiểu (TypedDict) bằng các ký hiệu Bắt buộc và Không bắt buộc cũng được cung cấp để xác định các trường bắt buộc và tùy chọn (theo mặc định, tất cả các trường được khai báo đều bắt buộc nếu tham số tổng không được đặt thành False).

Đã thêm bộ trang trí lớp, phương thức và hàm @dataclass_transform ; khi được chỉ định, trình kiểm tra kiểu tĩnh sẽ coi đối tượng như thể nó sử dụng bộ trang trí @dataclasses.dataclass.

Các thay đổi khác nổi bật trong phiên bản mới này:

  • Đã thêm khả năng sử dụng nhóm nguyên tử ((?>…)) Và lượng tử ghen tị (sở hữu) (* +, ++,? +, {M, n} +) trong biểu thức chính quy.
  • Loại TypeVarTuple đã được thêm vào, cho phép sử dụng các biến thể chung, không giống như TypeVar, không bao gồm một loại mà là một số loại tùy ý.
  • Thư viện chuẩn bao gồm mô-đun tomllib với các chức năng phân tích cú pháp định dạng TOML.
  • Phương thức add_note () đã được thêm vào lớp BaseException, cho phép đính kèm ghi chú văn bản vào ngoại lệ, ví dụ như để thêm thông tin ngữ cảnh không có sẵn tại thời điểm ngoại lệ được ném.
  • Một kiểu đặc biệt Tự đã được thêm vào để đại diện cho lớp riêng hiện tại. Tự có thể được sử dụng để chú thích các phương thức trả về một thể hiện của lớp của bạn theo cách đơn giản hơn so với sử dụng TypeVar.
  • Đã thêm tùy chọn dòng lệnh "-P" và biến môi trường PYTHONSAFEPATH để vô hiệu hóa kết nối tự động của các đường dẫn tệp có khả năng không an toàn tới sys.path.
  • Tiện ích py.exe dành cho nền tảng Windows đã được cải tiến đáng kể để hỗ trợ cú pháp "-V:". / "ngoài" - . ».
  • Nhiều macro C API đã được chuyển đổi thành các hàm nội tuyến thông thường hoặc tĩnh
  • Các mô-đun uu, cgi, pipe, crypt, aifc, chunk, msilib, telnetlib, audioop, nis, sndhdr, imghdr, nntplib, spwd, xdrlib, cgitb, mailcap, ossaudiodev và sunau đã không được dùng nữa và sẽ bị xóa khỏi Python. 3.13 phát hành.
  • Đã xóa các hàm PyUnicode_Encode *.
  • Lớp TaskGroup đã được thêm vào mô-đun asyncio với việc triển khai trình quản lý ngữ cảnh không đồng bộ chờ nhóm tác vụ hoàn thành.
  • Việc thêm nhiệm vụ vào một nhóm được thực hiện bằng phương thức create_task ().

Cuối cùng, nếu bạn muốn tìm hiểu thêm về vấn đề này , bạn có thể xem chi tiết tại liên kết sau.


Thêm vào danh sách nguồn ưu tiên trên Google.