Kaia Asked: 2024-08-31 01:41:40 +0800 CST2024-08-31 01:41:40 +0800 CST 2024-08-31 01:41:40 +0800 CST 字符串切片复制是 CPython 的实现细节还是规范的一部分? 772 Python 对字符串进行按复制切片:Python 是否对字符串进行按引用切片? 这是所有 Python 实现都需要尊重的吗,还是仅仅是 CPython 实现的一个细节? python 1 个回答 Voted Best Answer wim 2024-08-31T01:46:26+08:002024-08-31T01:46:26+08:00 这在语言参考中没有记录,是 CPython 实现的一个细节。几年前曾有人提出一个补丁来避免复制,但 Guido 出于性能考虑拒绝了它(参考)。 理论上,可以在实现中避免复制而不会违反任何要求,但使用 CPython 当前使用的引用计数和垃圾收集技术来实现会很困难。 在切片上复制底层内存str是因为如果没有复制,引用计数就会变得复杂,而引用计数本身是 CPython 的一个实现细节。因此复制字符串切片也是一个实现细节。 请注意,一些特定的切片不会复制。这也是一个实现细节/优化。
这在语言参考中没有记录,是 CPython 实现的一个细节。几年前曾有人提出一个补丁来避免复制,但 Guido 出于性能考虑拒绝了它(参考)。
理论上,可以在实现中避免复制而不会违反任何要求,但使用 CPython 当前使用的引用计数和垃圾收集技术来实现会很困难。
在切片上复制底层内存
str
是因为如果没有复制,引用计数就会变得复杂,而引用计数本身是 CPython 的一个实现细节。因此复制字符串切片也是一个实现细节。请注意,一些特定的切片不会复制。这也是一个实现细节/优化。