Подтвердить что ты не робот

Как я могу узнать больше о внутренних компонентах Pythons?

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

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

4b9b3361

Ответ 1

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

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

Например:

и т.д.

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

Ответ 2

Кому-то, кто наткнулся на этот вопрос из связанных ссылок или поиска, есть документация, написанная Янивом Акнином на Internals Python. Он начинается с нуля и хорошо читается.

Ответ 4

Сначала я прочитал What New для Python 3. Он дает хороший обзор на высоком уровне и затрагивает подробные изменения.

Вы также можете выполнить поиск по портированию на python 3 или аналогичный. Есть много хороших ресурсов и инструментов.

Одним из инструментов, который новый и трудно найти, является six, Бенджамин Петерсон. Это позволяет записывать код, совместимый с пробелом 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.

Ответ 5

Должен ли я идти по принципу "сверху вниз" или "снизу вверх"?

И! Серьезно.