Как устроен append в list?

Вопрос не несёт какое-то практическое значение чисто учебное
Как устроен метод append у list
Не на уровне CPython и работы с железом а на уровне Python
Такая реализация как бы работает но как бы я не пересоздаю append а использую append класса list()
def __init__(self, *arg):
    self.list = list(arg)

def append(self, item):
    self.list.append(item)

Я пробовал копаться в исходниках но не чего не понимаю(
И найти инфу в интернете не могу там либо как list реализован на уровне работы с железом либо используются уже методы класса list

В общем буду рад либо объяснению либо ссылку где можно почитать ну или что гуглить
  • Вопрос задан
  • 364 просмотра
Решения вопроса 1
sswwssww
@sswwssww
То на что ты смотришь это stub файлы сгенерированные Pycharm(например), т.е это просто служебные файлы "подделки", для того чтобы ты мог смотреть документацию, сигнатуры и тп. Если хочешь узнать как реально устроен метод append тебе нужно ковыряться в исходниках на C.
CTRL + F и ищи по list_append, а далее смотри на стек вызовов других функций(_PyList_AppendTakeRef и т.д).
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
nzlgd
@nzlgd
int
PyList_Append(PyObject *op, PyObject *newitem)
{
    if (PyList_Check(op) && (newitem != NULL)) {
        Py_INCREF(newitem);
        return _PyList_AppendTakeRef((PyListObject *)op, newitem);
    }
    PyErr_BadInternalCall();
    return -1;
}


Вот код из исходников питона, думаю объяснять ничего не надо
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы