python底层split代码
时间: 2023-10-14 22:17:53 浏览: 233
Python中的split函数是一个内置函数,是用C语言实现的,底层代码如下:
```c
static PyObject *
string_split(PyObject *self, PyObject *args, PyObject *kwds)
{
...
if (PyUnicode_READY(str) == -1)
return NULL;
sep = _PyUnicode_ToCodepointArray(sepobj, &nsep);
if (sep == NULL)
return NULL;
...
Py_ssize_t i, j;
...
for (i = start; i < end; i = j + nsep) {
...
j = PyUnicode_FindChar(str, sep[0], i, end, direction);
...
if (nsep == 1 && j < end) {
count++;
i = j + 1;
}
else {
...
if (count == maxsplit)
break;
}
}
...
return result;
}
```
简单解释一下:
- `PyUnicode_READY()`是一个宏,用于确保Unicode对象已经被初始化。如果初始化失败,将返回-1。
- `_PyUnicode_ToCodepointArray()`是一个函数,用于将Unicode对象转换为Unicode码点数组。
- `PyUnicode_FindChar()`是一个函数,用于在Unicode对象中查找特定字符的第一个出现位置。
- `result`是一个列表对象,用于存储分割后的字符串。
具体实现细节还需要结合源码进一步分析。
阅读全文