Вопрос-Ответ

Finding the source code for built-in Python functions?

Как найти исходный код для встроенных функций Python?

Есть ли способ увидеть, как встроенные функции работают в python? Я имею в виду не только то, как их использовать, но и то, как они были созданы, какой код стоит за сортировкой или перечислением и т.д. ...?

Переведено автоматически
Ответ 1

Поскольку Python имеет открытый исходный код, вы можете прочитать исходный код.

Чтобы узнать, в каком файле реализован конкретный модуль или функция, обычно можно вывести атрибут __file__. В качестве альтернативы вы можете использовать inspect модуль, см. раздел Получение исходного кода в документации inspect.

Для встроенных классов и методов это не так просто, поскольку inspect.getfile и inspect.getsource вернет ошибку типа, указывающую, что объект является встроенным. Однако многие из встроенных типов можно найти в Objects подкаталоге магистрали исходных текстов Python. Например, смотрите Здесь реализацию класса enumerate или здесь реализацию list типа.

Ответ 2

Вот ответ из кулинарной книги в дополнение к ответу @ Chris, CPython переместился на GitHub, и репозиторий Mercurial больше не будет обновляться:


  1. При необходимости установите Git.

  2. git clone https://github.com/python/cpython.git


  3. Код будет отправлен в подкаталог с именем cpython -> cd cpython


  4. Допустим, мы ищем определение print()...

  5. egrep --color=always -R 'print' | less -R

  6. Ага! Смотрите Python/bltinmodule.c -> builtin_print()

Наслаждайтесь.

Ответ 3

введите описание изображения здесь

Мне пришлось немного покопаться, чтобы найти источник следующего Built-in Functions поскольку поиск выдал бы тысячи результатов. (Удачи в поиске любой из них, чтобы узнать, где находится ее исходный код)

В любом случае, все эти функции определены в bltinmodule.c Функции начинаются с builtin_{functionname}


Встроенный исходный код: https://github.com/python/cpython/blob/master/Python/bltinmodule.c


Для встроенных типов: https://github.com/python/cpython/tree/master/Objects


Ответ 4

Оболочка IPython упрощает это: function? предоставит вам документацию. function?? также показывает код. НО это работает только для чистых функций python.

Тогда вы всегда можете скачать исходный код для (c) Python.

Если вас интересуют реализации основных функций на pythonic, взгляните на исходный код PyPy.

python