Достоинства:
Первое: мягкое, победное запутывание.
Второе: если компиляция приводит к значительному уменьшению файла, вы получите более быстрое время загрузки. Хорошо для Интернета.
Третье: Python может пропустить этап компиляции. Быстрее при начальной нагрузке. Хорошо для процессора и в Интернете.
В-четвертых: чем больше вы комментируете, тем меньше размер файла .pyc
или .pyo
файла по сравнению с исходным .py
файлом.
В- пятых: конечный пользователь с только .pyc
или.pyo
файл имеет гораздо меньше шансов представить вам ошибку, вызванную необратимым изменением, о котором он забыл сообщить вам.
Шестое: если вы нацелены на встроенную систему, получение файла меньшего размера для встраивания может представлять значительный плюс, а архитектура стабильна, поэтому недостаток, подробно описанный ниже, не вступает в игру.
Компиляция высшего уровня
Полезно знать, что вы можете скомпилировать исходный файл Python верхнего уровня в .pyc
файл следующим образом:
python -m py_compile myscript.py
Это удаляет комментарии. Это оставляет docstrings
нетронутым. Если вы хотите избавиться от этого docstrings
(вы можете серьезно задуматься о том, почему вы это делаете), то скомпилируйте этот способ вместо этого ...
python -OO -m py_compile myscript.py
... и вы получите .pyo
файл вместо .pyc
файла; одинаково распространяемый с точки зрения основной функциональности кода, но меньший по размеру вычеркнутого docstrings
(и менее понятный для последующей работы, если он имел приличныйdocstrings
в первую очередь). Но см. Недостаток три ниже.
Обратите внимание, что python использует .py
дату файла, если он присутствует, чтобы решить, должен ли он выполнять .py
файл в отличие от файла .pyc
или .pyo
- поэтому отредактируйте ваш файл .py, и файл .pyc
или .pyo
устарел, и все полученные преимущества будут потеряны. Вам нужно перекомпилировать его, чтобы снова .pyc
или .pyo
снова получить преимущества или выгоды, какими бы они ни были.
Недостатки:
Во-первых: есть «волшебный файл cookie» .pyc
и .pyo
файлы, которые указывают архитектуру системы, в которой был скомпилирован файл python. Если вы распространите один из этих файлов в среде другого типа, он сломается. Если вы распространяете .pyc
или .pyo
без связанного .py
для перекомпиляции или touch
так, он заменяет .pyc
или.pyo
, конечный пользователь также не может это исправить.
Второе: если docstrings
пропустить с использованием параметра -OO
командной строки, как описано выше, никто не сможет получить эту информацию, что может сделать использование кода более трудным (или невозможным).
Третье: -OO
опция Python также реализует некоторые оптимизации в соответствии с параметром -O
командной строки; это может привести к изменениям в работе. Известные оптимизации:
sys.flags.optimize
= 1
assert
заявления пропускаются
__debug__
= Ложь
В- четвертых , если вы намеренно сделали свой питон скрипт исполняемым с чем - то порядка #!/usr/bin/python
на первой линии, это раздели в .pyc
и .pyo
файлов и функциональность теряется.
Пятое: в некоторой степени очевидно, но если вы компилируете свой код, это не только может повлиять на его использование, но и возможность для других извлекать уроки из вашей работы, часто сильно.