Я программировал использование Python в течение немного больше чем половины года теперь, и я больше интересуюсь внутренностями Python вместо того, чтобы использовать Python для разработки приложений. В настоящее время я работаю над портированием нескольких библиотек от Python2 до Python3. Однако у меня есть довольно абстрактное представление о том, как передать материал порта от Python2 до Python3 как большая часть соглашения об изменениях с вопросами проектирования в Python2.x
Я хотел бы узнать больше о внутренностях Python; я должен пойти для нисходящего или подхода снизу вверх? Есть ли какие-либо ссылки, которые Вы могли рекомендовать?
Похоже, что вы хотите узнать больше об обосновании дизайна языка, а не о его внутреннем устройстве. Для меня "внутренности" означают такие вещи, как расположение объектов в памяти, как работает подсчет ссылок и так далее.
Если вы ищете более глубокого понимания проектных решений, попробуйте прочитать PEPs: это предложения по изменениям в языке, и они часто включают подробное обсуждение причин изменений, отвергнутых альтернатив и так далее. Даже отвергнутые PEP полезны, поскольку они показывают, какой ход мыслей привел к формированию языка.
Например:
и так далее...
Если вы действительно хотите узнать о внутреннем устройстве Python, то начните с чтения об API Python C, который используется для создания самого Python: мой доклад A Whirlwind Excursion through Python C Extensions - одно из мест, с которого можно начать. Затем вы можете погрузиться в сам исходный код Python, чтобы узнать обо всем, что вам нужно.
Сначала я бы прочитал документ Что нового для Python 3. Он дает хороший общий обзор и затрагивает подробные изменения.
Вы также можете выполнить поиск по запросу «перенос на python 3» или аналогичный. Есть много хороших ресурсов и инструментов.
Один новый инструмент, который трудно найти, - это шесть Бенджамина Петерсона. Он позволяет писать код, совместимый с промежутком Python 2 * 3.
Самым трудным для меня при поддержке кода, совместимого с Python 2 и Python 3, было развертывание. Я мог написать код, который работал бы нормально, но когда я приступил к пакету и развертыванию, было неясно, когда должно произойти преобразование. В конце концов я нашел команду distutils build_py_2_to_3
, которая могла бы помочь. Используя эту команду в моем setup.py, я мог бы выпустить исходный код, который можно было бы развернуть на Python 2 или Python 3. Пример можно найти в jaraco.util.
Вы также спросили о внутреннем устройстве. Если вы действительно хотите разобраться во внутреннем устройстве, вы можете просмотреть исходный код для Python 2.x и Python 3.x , хотя, честно говоря, я бы продолжил читать руководства и, возможно, некоторые из файлов .py в библиотеках Python.
Что мне следует выбрать: сверху вниз или снизу вверх?
И то, и другое! Шутки в сторону.