Плюси:
По-перше: легке, поразкове затьмарення.
По-друге: якщо компіляція призведе до значно меншого файлу, ви отримаєте швидший час завантаження. Приємно для Інтернету.
Третє: Python може пропустити етап компіляції. Швидше при ініціальному навантаженні. Приємно для процесора та Інтернету.
По-четверте: чим більше ви коментуєте, тим меншим буде .pyc
або .pyo
файл порівняно з вихідним .py
файлом.
По-п’яте: кінцевий користувач, у якому є лише файл .pyc
або .pyo
файл, набагато рідше подасть вам помилку, яку вони викликали неповернені зміни, про які вони забули розповісти.
По-шосте: якщо ви орієнтуєтесь на вбудовану систему, отримання файлу меншого розміру для вбудовування може бути значним плюсом, а архітектура стабільна, тому недолік, деталізований нижче, не вживається.
Компіляція верхнього рівня
Корисно знати, що ви можете зібрати вихідний файл пітона верхнього рівня у .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
файлів і функціональність втрачається.
По-п’яте: дещо очевидно, але якщо ви скомпонуєте свій код, на його використання може вплинути не тільки його використання, але й потенціал, щоб інші навчились вашій роботі, скорочується, часто сильно.