Способ найти конкретную реализацию некоторых функций в Python? - PullRequest
0 голосов
/ 29 июня 2018

Предыстория: Когда я сегодня читаю исходный код, я чувствую любопытство по поводу @staticmethod, и я думаю, что этот декоратор может быть реализован с использованием класса, который имеет метод __get__. Это действительно может быть сделано, но это не так эффективно, поэтому я думаю, что, возможно, python использует другие способы, такие как завершение его в исходном коде C. Я использую grep и нахожу, что это было упомянуто в funcobject.h:

/* The classmethod and staticmethod types lives here, too */
PyAPI_DATA(PyTypeObject) PyClassMethod_Type;
PyAPI_DATA(PyTypeObject) PyStaticMethod_Type;

PyAPI_FUNC(PyObject *) PyClassMethod_New(PyObject *);
PyAPI_FUNC(PyObject *) PyStaticMethod_New(PyObject *);

но это всего лишь заголовочный файл, и я не знаю, как продолжить исследование.

Итак, я здесь на вопрос:

Когда я хочу выяснить реализацию какой-либо функции, есть ли какой-нибудь эффективный метод (или методы), которым я могу следовать?

Например: как Python реализовал sort(), он использовал быструю сортировку или сортировку слиянием? Как долго это будет потреблять? O (nlogn) или O (n2)?

...