Я хочу начать читать исходный код Python. С чего начать?

Я хочу начать читать исходный код Python.

Мой опыт,

Я хорошо знаю Python и Java. Я знаю некоторые другие языки на разных уровнях владения, но ни C/C +/особенно хорошо. Я изучал C в колледже, но никогда не был профессионально запрограммирован в нем.

Мои причины для чтения этого кода.

  • Понять, как работает python под капотом.
  • Узнайте C лучше.

1 для меня важнее, чем 2.

Как мне это сделать?

Ответ 1

Начните с изучения API Python C. Это большой и богатый API, и источник Python, естественно, использует его повсюду. Вы не получите очень далеко от исходного кода Python, прежде чем вам придется понимать, что понимается под Py_INCREF и т.д.

Я представил презентацию в Pycon, объясняющую API: Вихревая экскурсия через Python C Extensions, которая может оказаться полезной. C используют тот же API, что и сам код Python.

Ответ 2

Во-первых, если вас больше всего интересует 1, я бы начал с чтения Python-источника различных модулей (а не сразу перейти на C). Всякий раз, когда я обнаруживал, что читаю источник некоторых модулей, я всегда узнавал о программировании на Python.

Во-вторых, если вы пытаетесь лучше узнать C, я лично предлагаю нечто совершенно другое: программа в нем. Просто статичный исходный код не, чтобы вы лучше поняли C (или, по крайней мере, это ограниченный подход, это может сделать вас немного лучше, но только так, что источник чтения доставит вас).

После программирования, по крайней мере, проекта с умеренным размером в C, , затем, я бы начал искать источник Python. Это действительно единственный способ лучше узнать C, и я действительно думаю, что чтение C-источника Python, не зная C, не заставит вас очень далеко.

Идея для проекта C

На самом деле, здесь идея для проекта C: напишите интерпретатор Python в C. Очевидно, что он не будет даже близок к завершению, и это довольно сложный проект, но если вы сосредоточены только на некоторых частях язык, я думаю, что это хорошая идея.

Не только это поможет вам научиться C, это поможет вам понять Python намного лучше даже до, глядя на источник: вам нужно будет более глубокое понимание лота материала в Python, вы поймете компромисс между проектами в работе Python и т.д.

Затем, когда вы наконец прочитаете код Python, вы не только поймете, почему некоторые вещи работают таким образом, вы, вероятно, узнаете много действительно классных методов C, которые решают проблемы, которые у вас были.

Ответ 3

1) Сначала убедитесь, что вы можете создать свой собственный Python и запустить его в отладчик. Таким образом, вы можете не только добавлять выражения печати, но и ломаться в точках и следить за потоком кода. Если у вас есть инструменты, которые позволяют вам отслеживать вызовы функций, идеально, вам это понадобится.

2) Начните с файла, реализующего типы данных. Их очень легко понять, и вы улучшаете свои языковые навыки языка C во время чтения кода.

3) Сделайте UML-диаграммы - простые вспомогательные инструменты для рисования, такие как Argo UML или MS Visio, могут помочь вам здесь. Запишите поток кода.

4) Прочтите код запуска для python. Посмотрите, что и как инициализируется базовая инфраструктура.

6) Ty понять сторону Python на 100% - даже более сложные детали реализации, то, что такое AST, и какие связанные и несвязанные методы и как вы их реализуете. Когда у вас есть модель в виду, как вы пишете интерпретатор python, вы можете перейти к заключительному мастер-шагу.

7) Запишите расширение отладчика с предоставленным API-интерфейсом быстрого отладчика C. Это поможет вам улучшить ваши навыки C.

8) Сделайте заключительный мастер-шаг и погрузитесь в суть кода переводчика. Это даже трудно читать и понимать для хорошо программируемого программиста на C. Читайте, как выражаются оценки и методы поиска, кешируются, кадры настраиваются для правил определения области и т.д. Это сложно и сложно - с точки зрения сложности и строк кода.

9) Запустите Adobe Photoshop и создайте красивый диплом "Мастер Питона" и положите его на стену своего офиса.

Ответ 4

Загрузите source с веб-сайта Python. Скажем, вы распаковали исходный код в каталог с именем Python-3.1.1. Я предлагаю вам две отправные точки в исходном коде Python, которые помогут вам изучить, как работает Python под капотом:

  • Изучите, как виртуальная машина Python выполняет байт-код, сгенерированный с помощью межсетевого интерфейса. Python VM находится в файле с именем Python-3.1.1/Python/ceval.c. Ядром VM является цикл eval, который начинается с функции PyEval_EvalFrameEx в ceval.c. Прочтите исходный текст и встроенные комментарии. Я уверен, что вам понравится.

  • Другой вариант - посмотреть, как реализованы встроенные типы данных python, такие как списки, словари и наборы. Например, наборы реализованы в Python-3.1.1/Objects/setobject.c. Каталог объектов также содержит реализации других типов данных.

Ответ 5

Вопрос довольно широк, поэтому я думаю, лучший ответ - просто загрузить источник python и сходить с ума. Выберите модуль или раздел питона, который вы хорошо знаете, и проверьте, что находится под капотом.