PEP 756:新增 PyUnicode_Export() 和 PyUnicode_Import() C 函数

PEP 756:新增 PyUnicode_Export() 和 PyUnicode_Import() C 函数

💡 原文英文,约1500词,阅读约需6分钟。
📝

内容提要

PEP 756 提议在 Python 3.14 中新增 PyUnicode_Export() 和 PyUnicode_Import() 函数,以支持将 Python 字符串导出为 Py_buffer 视图和从缓冲区导入字符串。这些函数通常具有 O(1) 的复杂度,无需内存复制,旨在提升 C API 的灵活性和性能,优化字符串处理效率。

🎯

关键要点

  • PEP 756 提议在 Python 3.14 中新增 PyUnicode_Export() 和 PyUnicode_Import() 函数。
  • PyUnicode_Export() 函数用于将 Python 字符串导出为 Py_buffer 视图,复杂度为 O(1),通常不需要内存复制。
  • PyUnicode_Import() 函数用于从缓冲区导入字符串,支持多种格式,包括 UCS1、UCS2、UCS4、UTF-8 和 ASCII。
  • PEP 393 改变了 Python 字符串的内部表示,使用三种格式以提高效率。
  • 新增的 API 函数将增强 C API 的灵活性和性能,优化字符串处理效率。
  • 导出和导入过程中允许嵌入 NUL 字符和替代字符,但不要求导出字符串以 NUL 字符结尾。
  • 该提案不会影响向后兼容性,仅添加新的 C API 函数。

延伸问答

PEP 756 中新增的 PyUnicode_Export() 和 PyUnicode_Import() 函数有什么作用?

这两个函数用于将 Python 字符串导出为 Py_buffer 视图和从缓冲区导入字符串,旨在提升 C API 的灵活性和性能。

PyUnicode_Export() 函数的复杂度是多少?

PyUnicode_Export() 函数通常具有 O(1) 的复杂度,通常不需要内存复制。

PEP 756 提案对向后兼容性有影响吗?

该提案不会影响向后兼容性,仅添加新的 C API 函数。

PyUnicode_Import() 函数支持哪些字符串格式?

PyUnicode_Import() 函数支持 UCS1、UCS2、UCS4、UTF-8 和 ASCII 格式。

在导出和导入字符串时,是否允许嵌入 NUL 字符?

是的,导出和导入过程中允许嵌入 NUL 字符。

PEP 393 对 Python 字符串的内部表示做了什么改变?

PEP 393 改变了 Python 字符串的内部表示,使用三种格式以提高效率。

➡️

继续阅读