Python中的字符串函数实现?

0 投票
1 回答
1781 浏览
提问于 2025-04-17 07:09

有没有关于Python字符串函数是怎么实现的文档呢?

我知道str是一个内置模块,所以它的函数是用C语言实现的。但是难道就没有其他的代码吗?那在Pypy里呢?我看到他们重新用Python实现了很多内置模块。

举个例子:字符串的split方法是怎么实现的?(我不想自己写一个实现)

补充说明:我想要用C语言写的实现(这就是Python/CPython源代码中的默认实现)。

1 个回答

5

这个回答其实并没有真正解决问题,只是有点长,不太适合做评论。

简单查了一下源代码,发现PyPy有两个版本的split()方法,一个是高层次、易读的版本,另一个是低层次的版本,后者看起来是rpython本身的split()实现。

这两个实现都和CPython的split()方法不完全相同(最明显的是它们没有处理CPython在sep没有提供时的特殊情况)。不过,如果你只是想了解基本的算法,而不在乎细节,PyPy的实现可以作为一个参考(快速看一下,它的功能基本上和CPython以及Jython是类似的)。

不过,作为一个通用的资源,没有理由认为PyPy的所有字符串函数实现都会和CPython使用的算法一致——毕竟,PyPy是为了在JIT环境下优化Python而设计的,这可能会对某个方法的合理实现产生重要影响(尤其是字符串函数,通常会成为性能瓶颈,因此“优化”运行时的开发者会有动力去优化它们)。

从更广泛的角度来看,CPython的开发者没有太大动力去维护一套纯Python实现的低级库,因为这些库已经在C语言中维护了。似乎存在很大的风险,导致这些镜像实现会变得过时或与实际情况不符,这最终可能会对那些想理解Python内部工作原理但又不想读C代码的人造成困扰。

撰写回答