Avantages:
Premièrement: une obscurcissement léger et vaincu.
Deuxièmement: si la compilation aboutit à un fichier beaucoup plus petit, vous obtiendrez des temps de chargement plus rapides. Sympa pour le web.
Troisièmement: Python peut ignorer l'étape de compilation. Plus rapide à charge initiale. Sympa pour le CPU et le web.
Quatrièmement: plus vous commentez, plus le fichier .pyc
ou .pyo
sera petit par rapport au .py
fichier source .
Cinquièmement: un utilisateur final avec seulement un .pyc
ou un .pyo
fichier en main est beaucoup moins susceptible de vous présenter un bogue causé par un changement non annulé dont il a oublié de vous parler.
Sixièmement: si vous visez un système embarqué, l'obtention d'un fichier de plus petite taille à incorporer peut représenter un avantage significatif, et l'architecture est stable, donc un inconvénient, détaillé ci-dessous, n'entre pas en jeu.
Compilation de haut niveau
Il est utile de savoir que vous pouvez compiler un fichier source python de niveau supérieur dans un .pyc
fichier de cette façon:
python -m py_compile myscript.py
Cela supprime les commentaires. Il laisse docstrings
intact. Si vous souhaitez vous en débarrasser docstrings
également (vous voudrez peut-être réfléchir sérieusement à la raison pour laquelle vous faites cela), compilez de cette façon à la place ...
python -OO -m py_compile myscript.py
... et vous obtiendrez un .pyo
fichier au lieu d'un .pyc
fichier; également distribuable en termes de fonctionnalités essentielles du code, mais plus petit par la taille du dépouillé docstrings
(et moins facile à comprendre pour un emploi ultérieur s'il avait été décent docstrings
en premier lieu). Mais voir l'inconvénient trois, ci-dessous.
Notez que python utilise la .py
date du fichier, si elle est présente, pour décider s'il doit exécuter le .py
fichier par opposition au fichier .pyc
ou .pyo
--- alors modifiez votre fichier .py, et le .pyc
ou .pyo
est obsolète et tous les avantages que vous avez gagnés sont perdus. Vous devez le recompiler afin de récupérer à nouveau le .pyc
ou les .pyo
avantages, tels qu'ils peuvent être.
Désavantages:
Premièrement: il y a un "cookie magique" dans .pyc
et des .pyo
fichiers qui indique l'architecture système dans laquelle le fichier python a été compilé. Si vous distribuez l'un de ces fichiers dans un environnement d'un type différent, il se cassera. Si vous distribuez le .pyc
ou .pyo
sans l'associé .py
à recompiler ou touch
si cela remplace le .pyc
ou .pyo
, l'utilisateur final ne peut pas le réparer non plus.
Deuxièmement: si vous docstrings
ignorez l'utilisation de l' -OO
option de ligne de commande décrite ci-dessus, personne ne pourra accéder à ces informations, ce qui peut rendre l'utilisation du code plus difficile (ou impossible).
Troisièmement: l' -OO
option de Python implémente également certaines optimisations selon l' -O
option de ligne de commande; cela peut entraîner des changements de fonctionnement. Les optimisations connues sont:
sys.flags.optimize
= 1
assert
les instructions sont ignorées
__debug__
= Faux
Quatrièmement: si vous aviez intentionnellement rendu votre script python exécutable avec quelque chose dans l'ordre de #!/usr/bin/python
la première ligne, cela est supprimé dans .pyc
et les .pyo
fichiers et cette fonctionnalité est perdue.
Cinquièmement: quelque peu évident, mais si vous compilez votre code, non seulement son utilisation peut être affectée, mais le potentiel des autres à apprendre de votre travail est réduit, souvent sévèrement.