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