0 added
0 removed
Original
2026-01-01
Modified
2026-03-10
1
<p>Теги: python, cpython, программирование на python, разработчик python</p>
1
<p>Теги: python, cpython, программирование на python, разработчик python</p>
2
<p>Всем известно, что<strong>Python</strong>- интерпретируемый язык программирования. Но это не совсем точно, конечно. Чтобы употреблять такие слова, нужно говорить о какой-то конкретной имплементации языка.Что же, давайте попробуем начать сначала.</p>
2
<p>Всем известно, что<strong>Python</strong>- интерпретируемый язык программирования. Но это не совсем точно, конечно. Чтобы употреблять такие слова, нужно говорить о какой-то конкретной имплементации языка.Что же, давайте попробуем начать сначала.</p>
3
<h2>Дубль два</h2>
3
<h2>Дубль два</h2>
4
<p>Всем известно, что<strong>CPython</strong>(самая распространенная<strong>имплементация</strong>) интерпретируемый! Но это не совсем точно, конечно. Можно сказать, что<strong>CPython</strong>полукомпилируемый, потому что исходный код компилируется в байт-код, который потом исполняется виртуальной машиной (тоже CPython в данном случае).</p>
4
<p>Всем известно, что<strong>CPython</strong>(самая распространенная<strong>имплементация</strong>) интерпретируемый! Но это не совсем точно, конечно. Можно сказать, что<strong>CPython</strong>полукомпилируемый, потому что исходный код компилируется в байт-код, который потом исполняется виртуальной машиной (тоже CPython в данном случае).</p>
5
<p>Традиционно же, когда мы говорим о компиляции, мы имеем в виду преобразование высокоуровневого языка в конкретный машинный код. У этой (полу)компиляции в<strong>Python</strong>есть свои особенности.</p>
5
<p>Традиционно же, когда мы говорим о компиляции, мы имеем в виду преобразование высокоуровневого языка в конкретный машинный код. У этой (полу)компиляции в<strong>Python</strong>есть свои особенности.</p>
6
<p>Исходный код можно скомпилировать в байт-код с разными флагами оптимизации: -О, -ОО. В результате у вас появятся *.pyo файлики с байт-кодом. При этом в первом случае у вас будут "выключены" assert'ы, а во втором - ещё "вырежутся" docstring'и. Оптимизации не особо крутые, чего уж тут говорить, если только в asserta'ах не было какой-то сложной логики.</p>
6
<p>Исходный код можно скомпилировать в байт-код с разными флагами оптимизации: -О, -ОО. В результате у вас появятся *.pyo файлики с байт-кодом. При этом в первом случае у вас будут "выключены" assert'ы, а во втором - ещё "вырежутся" docstring'и. Оптимизации не особо крутые, чего уж тут говорить, если только в asserta'ах не было какой-то сложной логики.</p>
7
<h2>И что это значит с практической точки зрения?</h2>
7
<h2>И что это значит с практической точки зрения?</h2>
8
<p>Как это знание может пригодиться? Например, если код разворачивается на CentOS с помощью rpm-пакетов, то во время сборки пакета неявно запускается<strong>brp-python-bytecompile</strong>скрипт, который компилирует Python файлы в<em>.pyc и</em>.pyo. Поэтому не стоит потом удивляться, что assert'ы в коде не срабатывают.</p>
8
<p>Как это знание может пригодиться? Например, если код разворачивается на CentOS с помощью rpm-пакетов, то во время сборки пакета неявно запускается<strong>brp-python-bytecompile</strong>скрипт, который компилирует Python файлы в<em>.pyc и</em>.pyo. Поэтому не стоит потом удивляться, что assert'ы в коде не срабатывают.</p>
9
<p><em>Хотите задать вопрос? Пишите комментарий!</em></p>
9
<p><em>Хотите задать вопрос? Пишите комментарий!</em></p>
10
10