Khấu hao

Đang chờ xóa trong Python 3.15

  • Hệ thống nhập khẩu:

    • Việc đặt __cached__ trên mô-đun trong khi không đặt được __spec__.cached không được dùng nữa. Trong Python 3.15, __cached__ sẽ không còn được hệ thống nhập hoặc thư viện chuẩn xem xét nữa. (gh-97879)

    • Việc đặt __package__ trên mô-đun trong khi không đặt được __spec__.parent không được dùng nữa. Trong Python 3.15, __package__ sẽ không còn được hệ thống nhập hoặc thư viện chuẩn xem xét nữa. (gh-97879)

  • ctypes:

    • Hàm ctypes.SetPointerType() không có giấy tờ đã không được dùng nữa kể từ Python 3.13.

  • http.server:

    • CGIHTTPRequestHandler lỗi thời và hiếm khi được sử dụng đã không được dùng nữa kể từ Python 3.13. Không có sự thay thế trực tiếp tồn tại. Anything tốt hơn CGI trong việc kết nối máy chủ web với trình xử lý yêu cầu.

    • Cờ --cgi cho giao diện dòng lệnh python -m http.server đã không được dùng nữa kể từ Python 3.13.

  • importlib:

    • Phương pháp load_module(): thay vào đó hãy sử dụng exec_module().

  • locale:

    • Hàm getdefaultlocale() đã không được dùng nữa kể từ Python 3.11. Việc loại bỏ nó ban đầu được lên kế hoạch cho Python 3.13 (gh-90817), nhưng đã bị hoãn lại đối với Python 3.15. Thay vào đó hãy sử dụng getlocale(), setlocale()getencoding(). (Được đóng góp bởi Hugo van Kemenade trong gh-111187.)

  • pathlib:

  • platform:

    • java_ver() đã không được dùng nữa kể từ Python 3.13. Chức năng này chỉ hữu ích khi hỗ trợ Jython, có API khó hiểu và phần lớn chưa được kiểm tra.

  • sysconfig:

  • threading:

    • RLock() sẽ không có đối số trong Python 3.15. Việc truyền bất kỳ đối số nào đã không còn được dùng nữa kể từ Python 3.14, vì phiên bản Python không cho phép bất kỳ đối số nào, nhưng phiên bản C cho phép bất kỳ số lượng đối số vị trí hoặc từ khóa nào, bỏ qua mọi đối số.

  • types:

    • types.CodeType: Việc truy cập co_lnotab không còn được dùng nữa trong PEP 626 kể từ phiên bản 3.10 và dự kiến ​​sẽ bị xóa trong phiên bản 3.12, nhưng nó chỉ nhận được một DeprecationWarning thích hợp trong phiên bản 3.12. Có thể được gỡ bỏ trong 3.15. (Được đóng góp bởi Nikita Sobolev trong gh-101866.)

  • typing:

    • Cú pháp đối số từ khóa không có giấy tờ để tạo các lớp NamedTuple (ví dụ: Point = NamedTuple("Point", x=int, y=int)) đã không được dùng nữa kể từ Python 3.13. Thay vào đó hãy sử dụng cú pháp dựa trên lớp hoặc cú pháp chức năng.

    • Khi sử dụng cú pháp chức năng của TypedDicts, việc không truyền giá trị cho tham số fields (TD = TypedDict("TD")) hoặc truyền None (TD = TypedDict("TD", None)) đã không được dùng nữa kể từ Python 3.13. Sử dụng class TD(TypedDict): pass hoặc TD = TypedDict("TD", {}) để tạo TypedDict với trường bằng 0.

    • Chức năng trang trí typing.no_type_check_decorator() đã không được dùng nữa kể từ Python 3.13. Sau tám năm sử dụng mô-đun typing, nó vẫn chưa được hỗ trợ bởi bất kỳ trình kiểm tra loại chính nào.

  • wave:

  • zipimport:

Đang chờ xóa trong Python 3.16

  • Hệ thống nhập khẩu:

    • Việc đặt __loader__ trên mô-đun trong khi không đặt được __spec__.loader không được dùng nữa. Trong Python 3.16, __loader__ sẽ không còn được thiết lập hoặc xem xét bởi hệ thống nhập hoặc thư viện chuẩn.

  • array:

    • Mã định dạng 'u' (wchar_t) không còn được dùng trong tài liệu kể từ Python 3.3 và trong thời gian chạy kể từ Python 3.13. Thay vào đó, hãy sử dụng mã định dạng 'w' (Py_UCS4) cho các ký tự Unicode.

  • asyncio:

  • builtins:

    • Đảo ngược bit trên các loại boolean, ~True hoặc ~False đã không được dùng nữa kể từ Python 3.12, vì nó tạo ra kết quả đáng ngạc nhiên và không trực quan (-2-1). Thay vào đó, hãy sử dụng not x để phủ định logic của Boolean. Trong trường hợp hiếm hoi mà bạn cần đảo ngược bitwise của số nguyên cơ bản, hãy chuyển đổi rõ ràng sang int (~int(x)).

  • functools:

    • Việc gọi triển khai Python của functools.reduce() bằng function hoặc sequence làm đối số từ khóa đã không được dùng nữa kể từ Python 3.14.

  • logging:

    Hỗ trợ trình xử lý ghi nhật ký tùy chỉnh với đối số strm không được dùng nữa và được lên lịch xóa trong Python 3.16. Thay vào đó, hãy xác định trình xử lý bằng đối số stream. (Được đóng góp bởi Mariusz Felisiak trong gh-115032.)

  • mimetypes:

    • Tiện ích mở rộng hợp lệ bắt đầu bằng dấu '.' hoặc trống cho mimetypes.MimeTypes.add_type(). Các tiện ích mở rộng không có dấu chấm không được dùng nữa và sẽ tăng ValueError trong Python 3.16. (Được đóng góp bởi Hugo van Kemenade trong gh-75223.)

  • shutil:

    • Ngoại lệ ExecError đã không được dùng nữa kể từ Python 3.14. Nó chưa được sử dụng bởi bất kỳ chức năng nào trong shutil kể từ Python 3.4 và hiện là bí danh của RuntimeError.

  • symtable:

    • Phương thức Class.get_methods đã không được dùng nữa kể từ Python 3.14.

  • sys:

  • sysconfig:

    • Hàm sysconfig.expand_makefile_vars() đã không được dùng nữa kể từ Python 3.14. Thay vào đó, hãy sử dụng đối số vars của sysconfig.get_paths().

  • tarfile:

    • Thuộc tính TarFile.tarfile không có giấy tờ và không được sử dụng đã không được dùng nữa kể từ Python 3.13.

Đang chờ xóa trong Python 3.17

  • collections.abc:

    • collections.abc.ByteString được lên kế hoạch xóa trong Python 3.17.

      Sử dụng isinstance(obj, collections.abc.Buffer) để kiểm tra xem obj có triển khai buffer protocol khi chạy hay không. Để sử dụng trong chú thích loại, hãy sử dụng Buffer hoặc liên kết chỉ định rõ ràng các loại mà mã của bạn hỗ trợ (ví dụ: bytes | bytearray | memoryview).

      ByteString ban đầu được dự định là một lớp trừu tượng sẽ đóng vai trò là siêu kiểu của cả bytesbytearray. Tuy nhiên, vì ABC chưa bao giờ có bất kỳ phương thức nào nên việc biết rằng một đối tượng là một thể hiện của ByteString chưa bao giờ thực sự cho bạn biết bất kỳ điều gì hữu ích về đối tượng đó. Các loại bộ đệm phổ biến khác như memoryview cũng không bao giờ được hiểu là kiểu con của ByteString (trong thời gian chạy hoặc bằng trình kiểm tra kiểu tĩnh).

      Xem PEP 688 để biết thêm chi tiết. (Được đóng góp bởi Shantanu Jain trong gh-91896.)

  • typing:

    • Trước Python 3.14, các hợp nhất kiểu cũ đã được triển khai bằng lớp riêng typing._UnionGenericAlias. Lớp này không còn cần thiết cho việc triển khai nhưng nó đã được giữ lại để tương thích ngược, với kế hoạch loại bỏ đối với Python 3.17. Người dùng nên sử dụng các công cụ trợ giúp xem xét nội tâm được ghi lại như typing.get_origin()typing.get_args() thay vì dựa vào các chi tiết triển khai riêng tư.

    • typing.ByteString, không được dùng nữa kể từ Python 3.9, được lên lịch xóa trong Python 3.17.

      Sử dụng isinstance(obj, collections.abc.Buffer) để kiểm tra xem obj có triển khai buffer protocol khi chạy hay không. Để sử dụng trong chú thích loại, hãy sử dụng Buffer hoặc liên kết chỉ định rõ ràng các loại mà mã của bạn hỗ trợ (ví dụ: bytes | bytearray | memoryview).

      ByteString ban đầu được dự định là một lớp trừu tượng sẽ đóng vai trò là siêu kiểu của cả bytesbytearray. Tuy nhiên, vì ABC chưa bao giờ có bất kỳ phương thức nào nên việc biết rằng một đối tượng là một thể hiện của ByteString chưa bao giờ thực sự cho bạn biết bất kỳ điều gì hữu ích về đối tượng đó. Các loại bộ đệm phổ biến khác như memoryview cũng không bao giờ được hiểu là kiểu con của ByteString (trong thời gian chạy hoặc bằng trình kiểm tra kiểu tĩnh).

      Xem PEP 688 để biết thêm chi tiết. (Được đóng góp bởi Shantanu Jain trong gh-91896.)

Đang chờ xóa trong Python 3.18

  • decimal:

    • Công cụ xác định định dạng Decimal không chuẩn và không có giấy tờ 'N', chỉ được hỗ trợ trong quá trình triển khai C của mô-đun decimal, đã không được dùng nữa kể từ Python 3.13. (Được đóng góp bởi Serhiy Storchaka trong gh-89902.)

Đang chờ xóa trong Python 3.19

  • ctypes:

    • Hoàn toàn chuyển sang bố cục cấu trúc tương thích với MSVC bằng cách đặt _pack_ chứ không phải _layout_ trên nền tảng không phải Windows.

Đang chờ xóa trong các phiên bản sau

Các API sau sẽ bị xóa trong tương lai, mặc dù hiện tại chưa có ngày dự kiến ​​xóa chúng.

  • argparse:

    • Việc lồng các nhóm đối số và lồng các nhóm loại trừ lẫn nhau không được dùng nữa.

    • Việc chuyển đối số từ khóa không có giấy tờ prefix_chars sang add_argument_group() hiện không được dùng nữa.

    • Bộ chuyển đổi loại argparse.FileType không được dùng nữa.

  • builtins:

    • Trình tạo: chữ ký throw(type, exc, tb)athrow(type, exc, tb) không được dùng nữa: thay vào đó hãy sử dụng throw(exc)athrow(exc), chữ ký đối số duy nhất.

    • Hiện tại Python chấp nhận các ký tự số ngay sau các từ khóa, ví dụ 0in x, 1or x, 0if 1else 2. Nó cho phép các biểu thức khó hiểu và mơ hồ như [0x1for x in y] (có thể hiểu là [0x1 for x in y] hoặc [0x1f or x in y]). Cảnh báo cú pháp sẽ được đưa ra nếu ngay sau chữ số là một trong các từ khóa and, else, for, if, in, isor. Trong bản phát hành sau này, nó sẽ được thay đổi thành lỗi cú pháp. (gh-87999)

    • Hỗ trợ phương thức __index__()__int__() trả về kiểu không phải int: các phương thức này sẽ được yêu cầu trả về một phiên bản của lớp con nghiêm ngặt của int.

    • Hỗ trợ phương thức __float__() trả về một lớp con nghiêm ngặt của float: những phương thức này sẽ được yêu cầu để trả về một phiên bản của float.

    • Hỗ trợ phương thức __complex__() trả về một lớp con nghiêm ngặt của complex: những phương thức này sẽ được yêu cầu để trả về một phiên bản của complex.

    • Việc truyền số phức dưới dạng đối số real hoặc imag trong hàm tạo complex() hiện không được dùng nữa; nó chỉ nên được thông qua dưới dạng một đối số vị trí duy nhất. (Được đóng góp bởi Serhiy Storchaka trong gh-109218.)

  • calendar: Các hằng số calendar.Januarycalendar.February không được dùng nữa và được thay thế bằng calendar.JANUARYcalendar.FEBRUARY. (Được đóng góp bởi Hoàng tử Roshan trong gh-103636.)

  • codecs: sử dụng open() thay vì codecs.open(). (gh-133038)

  • codeobject.co_lnotab: thay vào đó hãy sử dụng phương pháp codeobject.co_lines().

  • datetime:

    • utcnow(): sử dụng datetime.datetime.now(tz=datetime.UTC).

    • utcfromtimestamp(): sử dụng datetime.datetime.fromtimestamp(timestamp, tz=datetime.UTC).

  • gettext: Giá trị số nhiều phải là số nguyên.

  • importlib:

    • Tham số cache_from_source() debug_override không được dùng nữa: thay vào đó hãy sử dụng tham số optimization.

  • importlib.metadata:

    • giao diện bộ dữ liệu EntryPoints.

    • None ngầm định trên các giá trị trả về.

  • logging: phương thức warn() không được dùng nữa kể từ Python 3.3, thay vào đó hãy sử dụng warning().

  • mailbox: Việc sử dụng chế độ văn bản và đầu vào StringIO không được dùng nữa, thay vào đó hãy sử dụng BytesIO và chế độ nhị phân.

  • os: Gọi os.register_at_fork() trong quy trình đa luồng.

  • pydoc.ErrorDuringImport: Giá trị bộ dữ liệu cho tham số exc_info không được dùng nữa, hãy sử dụng một phiên bản ngoại lệ.

  • re: Các quy tắc nghiêm ngặt hơn hiện được áp dụng cho tham chiếu nhóm số và tên nhóm trong biểu thức chính quy. Hiện chỉ có chuỗi chữ số ASCII được chấp nhận làm tham chiếu số. Tên nhóm trong mẫu byte và chuỗi thay thế hiện chỉ có thể chứa các chữ cái, chữ số và dấu gạch dưới ASCII. (Được đóng góp bởi Serhiy Storchaka trong gh-91760.)

  • mô-đun sre_compile, sre_constantssre_parse.

  • shutil: Tham số onerror của rmtree() không được dùng nữa trong Python 3.12; thay vào đó hãy sử dụng tham số onexc.

  • Các tùy chọn và giao thức ssl:

    • ssl.SSLContext không có đối số giao thức sẽ không được dùng nữa.

    • ssl.SSLContext: set_npn_protocols()selected_npn_protocol() không được dùng nữa: thay vào đó hãy sử dụng ALPN.

    • tùy chọn ssl.OP_NO_SSL*

    • tùy chọn ssl.OP_NO_TLS*

    • ssl.PROTOCOL_SSLv3

    • ssl.PROTOCOL_TLS

    • ssl.PROTOCOL_TLSv1

    • ssl.PROTOCOL_TLSv1_1

    • ssl.PROTOCOL_TLSv1_2

    • ssl.TLSVersion.SSLv3

    • ssl.TLSVersion.TLSv1

    • ssl.TLSVersion.TLSv1_1

  • phương pháp threading:

  • typing.Text (gh-92332).

  • Lớp nội bộ typing._UnionGenericAlias không còn được sử dụng để triển khai typing.Union nữa. Để duy trì khả năng tương thích với người dùng sử dụng lớp riêng tư này, một miếng chêm tương thích sẽ được cung cấp cho đến ít nhất là Python 3.17. (Được đóng góp bởi Jelle Zijlstra trong gh-105499.)

  • unittest.IsolatedAsyncioTestCase: không được dùng để trả về giá trị không phải là None từ trường hợp thử nghiệm.

  • urllib.parse các hàm không được dùng nữa: thay vào đó là urlparse()

    • splitattr()

    • splithost()

    • splitnport()

    • splitpasswd()

    • splitport()

    • splitquery()

    • splittag()

    • splittype()

    • splituser()

    • splitvalue()

    • to_bytes()

  • wsgiref: SimpleHandler.stdout.write() không nên ghi một phần.

  • xml.etree.ElementTree: Việc kiểm tra giá trị thực của Element không được dùng nữa. Trong bản phát hành sau này, nó sẽ luôn trả về True. Thay vào đó, hãy ưu tiên các bài kiểm tra len(elem) hoặc elem is not None rõ ràng.

  • sys._clear_type_cache() không được dùng nữa: thay vào đó hãy sử dụng sys._clear_internal_caches().

C API ngừng sử dụng

Đang chờ xóa trong Python 3.15

Đang chờ xóa trong Python 3.18

Đang chờ xóa trong các phiên bản sau

Các API sau không còn được dùng nữa và sẽ bị xóa, mặc dù hiện tại chưa có ngày dự kiến ​​xóa chúng.