python - split方法是如何工作的?
有人知道Python里的split函数是怎么工作的吗?我的意思是,它是一个一个字符地读取字符串,然后执行代码,还是有其他的工作方式?我看过文档,但里面没有提到。
补充说明
对于像我一样好奇的人,可以去这里看看。根据Chris的说法,应该在第147行。
2 个回答
3
根据3.2版本的情况,split()
有几种不同的实现方式。首先,split()
如果不传任何参数,它有自己的一套实现,因为它的工作方式和其他的分割方法稍微有点不同。当你给定一个分割字符串时,有两种可能的实现方式:一种是针对单个字符的分隔符,另一种是针对其他字符串的分隔符。对于单个字符的实现,它会简单地遍历整个字符串,把分割出来的部分添加到一个列表里。而对于较长的字符串,算法是一样的,不过它会使用一种叫做布隆过滤器的技术来进行搜索。
3
如果你查看一下Python的源代码(我用的是2.7.1版本,不过我觉得在3.x系列中位置应该没变),你可以在 $src_dir/Objects/stringlib/split.h
找到完整的实现。这个函数的名字叫 stringlib_split
,在2.7.1版本中可以在第147行找到。