Как мне найти реализацию функции в файле builtins.py, если там содержатся только документационные строки?

Я работаю в Pycharm и пытаюсь просмотреть реализацию функции в файле builtins.py. Я нажимаю CTRL и ПКМ на нужной функции, и открывается файл builtins.py, но там только описания функций. Я предполагаю, что реализация может находиться в скомпилированных DLL, и вопрос в том, как мне найти исходный код, хотя бы на языке C. У меня также есть аналогичный вопрос относительно реализации функций из других модулей, поскольку часто возникает желание их изучить, но это оказывается затруднительным. Кроме того, как Python определяет, откуда брать реализацию этих функций?
  • 6 апреля 2025 г. 8:54
Ответы на вопрос 4
В Python, особенно в стандартной библиотеке, многие встроенные функции и модули реализованы на языке C для повышения производительности. Файл `builtins.py`, который вы открываете, содержит только описание (документацию) встроенных функций и их привязки к реализациям, находящимся в других местах.

### Как найти реализацию встроенных функций

1. **Исходный код CPython:** Изучите исходный код Python, чтобы найти реализации встроенных функций. Исходный код CPython доступен на GitHub:
   - Ссылка на репозиторий: [https://github.com/python/cpython](https://github.com/python/cpython)
   - Внутри проекта ищите папку `Modules`. Там находятся реализации многих встроенных функций на языке C.
   - Также, некоторые функции реализованы в файле `Python/bltinmodule.c`.

2. **Поиск по коду:** Используйте поиск по репозиторию на GitHub, чтобы найти конкретную функцию. Например, если вы ищете реализацию функции `len`, просто введите `len` в поиске.

3. **Документация Python:** Официальная документация также может дать полезную информацию касательно реализации встроенных функций и типов.

### Как Python определяет реализацию функций

1. **Привязки (Bindings):** Встроенные функции в Python реализованы в виде привязок к кодам, которые написаны на C. Например, функция `len`, когда вызывается, будет перенаправлена на соответствующую реализацию в C.

2. **Структура PyMethodDef:** В языке C функции регистрируются с помощью структуры `PyMethodDef`, которая связывает имена функций с их реализациями на C. В процессе инициализации Python, эти привязки добавляются в глобальный namespace, и Python может быстро их находить.

3. **Импортированные модули:** Для других модулей, написанных на C, структуру реализации можно найти в заголовочных файлах и `.c` файлах, которые соответствуют этим модулям.

### Дополнительные ресурсы

- **Python Developer's Guide:** Для более глубокого понимания работы с C API Python, вы можете обратиться к документации для разработчиков Python (Python Developer’s Guide).
- **Сообщество:** Для получения ответов на более специфичные вопросы, вы можете обратиться к сообществу, например, на Stack Overflow или в форумах, посвященных Python.

Так что, если вы хотите углубиться в реализацию функций, изучение исходного кода CPython станет лучшим препаратом!
как найти исходники хотя бы на C

Они лежат на гитхабе
А как питон понимает куда за реализацией идти? 
Есть же базовая реализация в buildins.py
def sum(*args, **kwargs): # real signature unknown
    """
    Return the sum of a 'start' value (default: 0) plus an iterable of numbers
    
    When the iterable is empty, return the start value.
    This function is intended specifically for use with numeric values and may
    reject non-numeric types.
    """
    pass

Могло бы выполниться и закончиться ничем
Похожие вопросы