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__.cachedkhô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__.parentkhô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)
-
Hàm
ctypes.SetPointerType()không có giấy tờ đã không được dùng nữa kể từ Python 3.13.
-
CGIHTTPRequestHandlerlỗ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ờ
--cgicho giao diện dòng lệnh python -m http.server đã không được dùng nữa kể từ Python 3.13.
-
Phương pháp
load_module(): thay vào đó hãy sử dụngexec_module().
-
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ụnggetlocale(),setlocale()vàgetencoding(). (Được đóng góp bởi Hugo van Kemenade trong gh-111187.)
-
PurePath.is_reserved()đã không được dùng nữa kể từ Python 3.13. Sử dụngos.path.isreserved()để phát hiện các đường dẫn dành riêng trên Windows.
-
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.
-
Đối số check_home của
sysconfig.is_python_build()đã không được dùng nữa kể từ Python 3.12.
-
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.CodeType: Việc truy cậpco_lnotabkhô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ộtDeprecationWarningthí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.)
-
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ềnNone(TD = TypedDict("TD", None)) đã không được dùng nữa kể từ Python 3.13. Sử dụngclass TD(TypedDict): passhoặcTD = 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ô-đuntyping, 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:Các phương thức
getmark(),setmark()vàgetmarkers()của các lớpWave_readvàWave_writeđã không còn được dùng nữa kể từ Python 3.13.
-
load_module()đã không được dùng nữa kể từ Python 3.10. Thay vào đó hãy sử dụngexec_module(). (Được đóng góp bởi Jiahao Li trong gh-125746.)
Đ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__.loaderkhô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.
-
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.iscoroutinefunction()không được dùng nữa và sẽ bị xóa trong Python 3.16; thay vào đó hãy sử dụnginspect.iscoroutinefunction(). (Được đóng góp bởi Jiahao Li và Kumar Aditya trong gh-122875.)Hệ thống chính sách
asynciokhông được dùng nữa và sẽ bị xóa trong Python 3.16. Cụ thể, các lớp và hàm sau không được dùng nữa:Người dùng nên sử dụng
asyncio.run()hoặcasyncio.Runnervới loop_factory để sử dụng cách triển khai vòng lặp sự kiện mong muốn.Ví dụ: để sử dụng
asyncio.SelectorEventLooptrên Windows:nhập asyncio async def main(): ... asyncio.run(main(), loop_factory=asyncio.SelectorEventLoop)
(Được đóng góp bởi Kumar Aditya trong gh-127949.)
-
Đảo ngược bit trên các loại boolean,
~Truehoặ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 (-2và-1). Thay vào đó, hãy sử dụngnot 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 sangint(~int(x)).
-
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.
-
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.)
-
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ăngValueErrortrong Python 3.16. (Được đóng góp bởi Hugo van Kemenade trong gh-75223.)
-
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 trongshutilkể từ Python 3.4 và hiện là bí danh củaRuntimeError.
-
Phương thức
Class.get_methodsđã không được dùng nữa kể từ Python 3.14.
sys:Hàm
_enablelegacywindowsfsencoding()đã không được dùng nữa kể từ Python 3.13. Thay vào đó hãy sử dụng biến môi trườngPYTHONLEGACYWINDOWSFSENCODING.
-
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ốvarscủasysconfig.get_paths().
-
Thuộc tính
TarFile.tarfilekhô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.ByteStringđược lên kế hoạch xóa trong Python 3.17.Sử dụng
isinstance(obj, collections.abc.Buffer)để kiểm tra xemobjcó triển khai buffer protocol khi chạy hay không. Để sử dụng trong chú thích loại, hãy sử dụngBufferhoặ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).ByteStringban đầ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ảbytesvàbytearray. 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ủaByteStringchư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ưmemoryviewcũng không bao giờ được hiểu là kiểu con củaByteString(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.)
-
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()và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 xemobjcó triển khai buffer protocol khi chạy hay không. Để sử dụng trong chú thích loại, hãy sử dụngBufferhoặ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).ByteStringban đầ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ảbytesvàbytearray. 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ủaByteStringchư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ưmemoryviewcũng không bao giờ được hiểu là kiểu con củaByteString(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¶
Đang chờ xóa trong Python 3.19¶
Đ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.
-
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.FileTypekhông được dùng nữa.
-
Trình tạo: chữ ký
throw(type, exc, tb)vàathrow(type, exc, tb)không được dùng nữa: thay vào đó hãy sử dụngthrow(exc)và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óaand,else,for,if,in,isvàor. 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__()và__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ủaint.Hỗ trợ phương thức
__float__()trả về một lớp con nghiêm ngặt củafloat: những phương thức này sẽ được yêu cầu để trả về một phiên bản củafloat.Hỗ trợ phương thức
__complex__()trả về một lớp con nghiêm ngặt củacomplex: những phương thức này sẽ được yêu cầu để trả về một phiên bản củacomplex.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.Januaryvàcalendar.Februarykhông được dùng nữa và được thay thế bằngcalendar.JANUARYvàcalendar.FEBRUARY. (Được đóng góp bởi Hoàng tử Roshan trong gh-103636.)codecs: sử dụngopen()thay vìcodecs.open(). (gh-133038)codeobject.co_lnotab: thay vào đó hãy sử dụng phương phápcodeobject.co_lines().-
utcnow(): sử dụngdatetime.datetime.now(tz=datetime.UTC).utcfromtimestamp(): sử dụngdatetime.datetime.fromtimestamp(timestamp, tz=datetime.UTC).
gettext: Giá trị số nhiều phải là số nguyên.-
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.
-
giao diện bộ dữ liệu
EntryPoints.Nonengầm định trên các giá trị trả về.
logging: phương thứcwarn()không được dùng nữa kể từ Python 3.3, thay vào đó hãy sử dụngwarning().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ọios.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_constantsvàsre_parse.shutil: Tham số onerror củarmtree()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.SSLContextkhông có đối số giao thức sẽ không được dùng nữa.ssl.SSLContext:set_npn_protocols()và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_SSLv3ssl.PROTOCOL_TLSssl.PROTOCOL_TLSv1ssl.PROTOCOL_TLSv1_1ssl.PROTOCOL_TLSv1_2ssl.TLSVersion.SSLv3ssl.TLSVersion.TLSv1ssl.TLSVersion.TLSv1_1
phương pháp
threading:threading.Condition.notifyAll(): sử dụngnotify_all().threading.Event.isSet(): sử dụngis_set().threading.Thread.isDaemon(),threading.Thread.setDaemon(): sử dụng thuộc tínhthreading.Thread.daemon.threading.Thread.getName(),threading.Thread.setName(): sử dụng thuộc tínhthreading.Thread.name.threading.currentThread(): sử dụngthreading.current_thread().threading.activeCount(): sử dụngthreading.active_count().
Lớp nội bộ
typing._UnionGenericAliaskhông còn được sử dụng để triển khaityping.Unionnữ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àNonetừ trường hợp thử nghiệm.urllib.parsecá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ủaElementkhô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 tralen(elem)hoặcelem is not Nonerõ ràng.sys._clear_type_cache()không được dùng nữa: thay vào đó hãy sử dụngsys._clear_internal_caches().
C API ngừng sử dụng¶
Đang chờ xóa trong Python 3.15¶
Zz000zz: Thay vào đó hãy sử dụng
PyImport_ImportModule().PyWeakref_GetObject()vàPyWeakref_GET_OBJECT(): Thay vào đó hãy sử dụngPyWeakref_GetRef(). pythoncapi-compat project có thể được sử dụng để nhậnPyWeakref_GetRef()trên Python 3.12 trở lên.loại
Py_UNICODEvà macroPy_UNICODE_WIDE: Thay vào đó hãy sử dụngwchar_t.PyUnicode_AsDecodedObject(): Thay vào đó hãy sử dụngPyCodec_Decode().PyUnicode_AsDecodedUnicode(): Thay vào đó hãy sử dụngPyCodec_Decode(); Lưu ý rằng một số codec (ví dụ: "base64") có thể trả về loại khácstr, chẳng hạn nhưbytes.PyUnicode_AsEncodedObject(): Thay vào đó hãy sử dụngPyCodec_Encode().PyUnicode_AsEncodedUnicode(): Thay vào đó hãy sử dụngPyCodec_Encode(); Lưu ý rằng một số codec (ví dụ: "base64") có thể trả về loại khácbytes, chẳng hạn nhưstr.Các hàm khởi tạo Python, không được dùng nữa trong Python 3.13:
Py_GetPath(): Thay vào đó hãy sử dụngPyConfig_Get("module_search_paths")(sys.path).Py_GetPrefix(): Thay vào đó hãy sử dụngPyConfig_Get("base_prefix")(sys.base_prefix). Sử dụngPyConfig_Get("prefix")(sys.prefix) nếu cần xử lý virtual environments.Py_GetExecPrefix(): Thay vào đó hãy sử dụngPyConfig_Get("base_exec_prefix")(sys.base_exec_prefix). Sử dụngPyConfig_Get("exec_prefix")(sys.exec_prefix) nếu cần xử lý virtual environments.Py_GetProgramFullPath(): Thay vào đó hãy sử dụngPyConfig_Get("executable")(sys.executable).Py_GetProgramName(): Thay vào đó hãy sử dụngPyConfig_Get("executable")(sys.executable).Py_GetPythonHome(): Thay vào đó hãy sử dụngPyConfig_Get("home")hoặc biến môi trườngPYTHONHOME.
pythoncapi-compat project có thể được sử dụng để nhận
PyConfig_Get()trên Python 3.13 trở lên.Các hàm định cấu hình khởi tạo Python, không được dùng nữa trong Python 3.11:
PySys_SetArgvEx(): Thay vào đó hãy đặtPyConfig.argv.PySys_SetArgv(): Thay vào đó hãy đặtPyConfig.argv.Py_SetProgramName(): Thay vào đó hãy đặtPyConfig.program_name.Py_SetPythonHome(): Thay vào đó hãy đặtPyConfig.home.PySys_ResetWarnOptions(): Thay vào đó hãy xóasys.warnoptionsvàwarnings.filters.
Thay vào đó,
Py_InitializeFromConfig()API nên được sử dụng vớiPyConfig.Biến cấu hình toàn cầu:
Py_DebugFlag: Thay vào đó hãy sử dụngPyConfig.parser_debughoặcPyConfig_Get("parser_debug").Py_VerboseFlag: Thay vào đó hãy sử dụngPyConfig.verbosehoặcPyConfig_Get("verbose").Py_QuietFlag: Thay vào đó hãy sử dụngPyConfig.quiethoặcPyConfig_Get("quiet").Py_InteractiveFlag: Thay vào đó hãy sử dụngPyConfig.interactivehoặcPyConfig_Get("interactive").Py_InspectFlag: Thay vào đó hãy sử dụngPyConfig.inspecthoặcPyConfig_Get("inspect").Py_OptimizeFlag: Thay vào đó hãy sử dụngPyConfig.optimization_levelhoặcPyConfig_Get("optimization_level").Py_NoSiteFlag: Thay vào đó hãy sử dụngPyConfig.site_importhoặcPyConfig_Get("site_import").Py_BytesWarningFlag: Thay vào đó hãy sử dụngPyConfig.bytes_warninghoặcPyConfig_Get("bytes_warning").Py_FrozenFlag: Thay vào đó hãy sử dụngPyConfig.pathconfig_warningshoặcPyConfig_Get("pathconfig_warnings").Py_IgnoreEnvironmentFlag: Thay vào đó hãy sử dụngPyConfig.use_environmenthoặcPyConfig_Get("use_environment").Py_DontWriteBytecodeFlag: Thay vào đó hãy sử dụngPyConfig.write_bytecodehoặcPyConfig_Get("write_bytecode").Py_NoUserSiteDirectory: Thay vào đó hãy sử dụngPyConfig.user_site_directoryhoặcPyConfig_Get("user_site_directory").Py_UnbufferedStdioFlag: Thay vào đó hãy sử dụngPyConfig.buffered_stdiohoặcPyConfig_Get("buffered_stdio").Py_HashRandomizationFlag: Thay vào đó hãy sử dụngPyConfig.use_hash_seedvàPyConfig.hash_seedhoặcPyConfig_Get("hash_seed").Py_IsolatedFlag: Thay vào đó hãy sử dụngPyConfig.isolatedhoặcPyConfig_Get("isolated").Py_LegacyWindowsFSEncodingFlag: Thay vào đó hãy sử dụngPyPreConfig.legacy_windows_fs_encodinghoặcPyConfig_Get("legacy_windows_fs_encoding").Py_LegacyWindowsStdioFlag: Thay vào đó hãy sử dụngPyConfig.legacy_windows_stdiohoặcPyConfig_Get("legacy_windows_stdio").Py_FileSystemDefaultEncoding,Py_HasFileSystemDefaultEncoding: Thay vào đó hãy sử dụngPyConfig.filesystem_encodinghoặcPyConfig_Get("filesystem_encoding").Py_FileSystemDefaultEncodeErrors: Thay vào đó hãy sử dụngPyConfig.filesystem_errorshoặcPyConfig_Get("filesystem_errors").Py_UTF8Mode: Thay vào đó hãy sử dụngPyPreConfig.utf8_modehoặcPyConfig_Get("utf8_mode"). (xemPy_PreInitialize())
Nên sử dụng
Py_InitializeFromConfig()API cùng vớiPyConfigđể đặt các tùy chọn này. HoặcPyConfig_Get()có thể được sử dụng để có được các tùy chọn này khi chạy.
Đang chờ xóa trong Python 3.18¶
Các hàm riêng tư sau đây không được dùng nữa và được lên kế hoạch xóa trong Python 3.18:
_PyBytes_Join(): sử dụngPyBytes_Join()._PyDict_GetItemStringWithError(): sử dụngPyDict_GetItemStringRef()._PyDict_Pop(): sử dụngPyDict_Pop()._PyLong_Sign(): sử dụngPyLong_GetSign()._PyLong_FromDigits()và_PyLong_New(): sử dụngPyLongWriter_Create()._PyThreadState_UncheckedGet(): sử dụngPyThreadState_GetUnchecked()._PyUnicode_AsString(): sử dụngPyUnicode_AsUTF8()._PyUnicodeWriter_Init(): thay thế_PyUnicodeWriter_Init(&writer)bằngwriter = PyUnicodeWriter_Create(0)._PyUnicodeWriter_Finish(): thay thế_PyUnicodeWriter_Finish(&writer)bằngPyUnicodeWriter_Finish(writer)._PyUnicodeWriter_Dealloc(): thay thế_PyUnicodeWriter_Dealloc(&writer)bằngPyUnicodeWriter_Discard(writer)._PyUnicodeWriter_WriteChar(): thay thế_PyUnicodeWriter_WriteChar(&writer, ch)bằngPyUnicodeWriter_WriteChar(writer, ch)._PyUnicodeWriter_WriteStr(): thay thế_PyUnicodeWriter_WriteStr(&writer, str)bằngPyUnicodeWriter_WriteStr(writer, str)._PyUnicodeWriter_WriteSubstring(): thay thế_PyUnicodeWriter_WriteSubstring(&writer, str, start, end)bằngPyUnicodeWriter_WriteSubstring(writer, str, start, end)._PyUnicodeWriter_WriteASCIIString(): thay thế_PyUnicodeWriter_WriteASCIIString(&writer, str)bằngPyUnicodeWriter_WriteASCII(writer, str)._PyUnicodeWriter_WriteLatin1String(): thay thế_PyUnicodeWriter_WriteLatin1String(&writer, str)bằngPyUnicodeWriter_WriteUTF8(writer, str)._PyUnicodeWriter_Prepare(): (không thay thế)._PyUnicodeWriter_PrepareKind(): (không thay thế)._Py_HashPointer(): sử dụngPy_HashPointer()._Py_fopen_obj(): sử dụngPy_fopen().
pythoncapi-compat project có thể được sử dụng để nhận các hàm công khai mới này trên Python 3.13 trở lên. (Được đóng góp bởi Victor Stinner trong gh-128863.)
Đ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.
Py_TPFLAGS_HAVE_FINALIZE: Không cần thiết kể từ Python 3.8.PyErr_Fetch(): Thay vào đó hãy sử dụngPyErr_GetRaisedException().PyErr_NormalizeException(): Thay vào đó hãy sử dụngPyErr_GetRaisedException().PyErr_Restore(): Thay vào đó hãy sử dụngPyErr_SetRaisedException().PyModule_GetFilename(): Thay vào đó hãy sử dụngPyModule_GetFilenameObject().PyOS_AfterFork(): Thay vào đó hãy sử dụngPyOS_AfterFork_Child().PySlice_GetIndicesEx(): Thay vào đó hãy sử dụngPySlice_Unpack()vàPySlice_AdjustIndices().PyUnicode_READY(): Không cần thiết kể từ Python 3.12PyErr_Display(): Thay vào đó hãy sử dụngPyErr_DisplayException()._PyErr_ChainExceptions(): Thay vào đó hãy sử dụng_PyErr_ChainExceptions1().Thành viên
PyBytesObject.ob_shash: thay vào đó hãy gọiPyObject_Hash().Chủ đề Lưu trữ cục bộ (TLS) API:
PyThread_create_key(): Thay vào đó hãy sử dụngPyThread_tss_alloc().PyThread_delete_key(): Thay vào đó hãy sử dụngPyThread_tss_free().PyThread_set_key_value(): Thay vào đó hãy sử dụngPyThread_tss_set().PyThread_get_key_value(): Thay vào đó hãy sử dụngPyThread_tss_get().PyThread_delete_key_value(): Thay vào đó hãy sử dụngPyThread_tss_delete().PyThread_ReInitTLS(): Không cần thiết kể từ Python 3.7.