Я хочу начать читать исходный код Python. Где я должен начать

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

Мой опыт,

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

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

  1. Поймите, как работает python под капотом.
  2. Учитесь C лучше.

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

как я должен это делать?

5 Solutions collect form web for “Я хочу начать читать исходный код Python. Где я должен начать”

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

Я выступил с презентацией в Pycon, объясняющей API: A Whirlwind Excursion через расширения Python C , которые могут оказаться полезными. C используют тот же API, что и сам код Python.

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

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

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

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

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

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

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

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

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 и создайте красивый диплом «Мастер Питона» и положите его на свою офисную стену.

Загрузите исходный код с веб-сайта 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. Каталог Objects также содержит реализации других типов данных.

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

  • Поддерживаются ли контейнеры C ++ 11 Cython?
  • Могу ли я использовать класс C ++ в классе python как суперкласс
  • Полнофункциональная библиотека даты и времени
  • ctypes возвращает строку из c функции
  • Есть ли преимущества использования интерфейса Python / C вместо Cython?
  • Передача «указателя на виртуальную функцию» в качестве аргумента в Python
  • Есть ли бесплатный переводчик Python to C?
  • Есть ли эквивалент python urllib в c / c ++?
  • Python - лучший язык программирования в мире.