Как я могу узнать больше о внутренностях Python? [закрытый]

Я программировал использование Python в течение немного больше чем половины года теперь, и я больше интересуюсь внутренностями Python вместо того, чтобы использовать Python для разработки приложений. В настоящее время я работаю над портированием нескольких библиотек от Python2 до Python3. Однако у меня есть довольно абстрактное представление о том, как передать материал порта от Python2 до Python3 как большая часть соглашения об изменениях с вопросами проектирования в Python2.x

Я хотел бы узнать больше о внутренностях Python; я должен пойти для нисходящего или подхода снизу вверх? Есть ли какие-либо ссылки, которые Вы могли рекомендовать?

50
задан Paul D. Waite 22 July 2010 в 07:58
поделиться

4 ответа

Похоже, что вы хотите узнать больше об обосновании дизайна языка, а не о его внутреннем устройстве. Для меня "внутренности" означают такие вещи, как расположение объектов в памяти, как работает подсчет ссылок и так далее.

Если вы ищете более глубокого понимания проектных решений, попробуйте прочитать PEPs: это предложения по изменениям в языке, и они часто включают подробное обсуждение причин изменений, отвергнутых альтернатив и так далее. Даже отвергнутые PEP полезны, поскольку они показывают, какой ход мыслей привел к формированию языка.

Например:

и так далее...

Если вы действительно хотите узнать о внутреннем устройстве Python, то начните с чтения об API Python C, который используется для создания самого Python: мой доклад A Whirlwind Excursion through Python C Extensions - одно из мест, с которого можно начать. Затем вы можете погрузиться в сам исходный код Python, чтобы узнать обо всем, что вам нужно.

35
ответ дан 7 November 2019 в 11:06
поделиться

Сначала я бы прочитал документ Что нового для 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.

2
ответ дан 7 November 2019 в 11:06
поделиться

Что мне следует выбрать: сверху вниз или снизу вверх?

И то, и другое! Шутки в сторону.

1
ответ дан 7 November 2019 в 11:06
поделиться
0
ответ дан 7 November 2019 в 11:06
поделиться
Другие вопросы по тегам:

Похожие вопросы: