sont des doctrings python et des commentaires stockés en mémoire lorsqu'un module est chargé? P> blockQuote>
Je me suis demandé si cela est vrai, car je documente bien mon code bien; peut-il affecter l'utilisation de la mémoire? P>
Habituellement, chaque objet Python a une méthode
__ code>. Ces docstrations sont-elles lues dans le fichier ou traitées autrement? Strong> p>
J'ai fait des recherches ici dans les forums, Google et les listes de diffusion, mais je n'ai trouvé aucune information pertinente. p>
savez-vous mieux? em> p>
4 Réponses :
Ils forts> sont forts> se lisent dans le fichier (lorsque le fichier est compilé à PYC ou lorsque la PYC est chargée - elles doivent être disponibles sous objet .__ Doc __ code>) mais non strong> -> Cela ne fera pas d'impact significatif sur la performance dans une circonstance raisonnable, ou vous écrivez-vous vraiment des chaînes DOC multi-mégaoctets? P>
+1 bonne et humoristique réponse et non b>, je ne i> écrire des chaînes multi-mégaoctets multi-mégaoctets;)
Oui, les docstrations sont lues dans le fichier, mais cela ne devrait pas vous empêcher de les écrire. Jamais jamais em> compromettre la lisibilité du code pour la performance jusqu'à ce que vous ayez fait un test de performance et que vous avez constaté que la chose qui vous inquiète est en fait le goulot d'étranglement de votre programme qui cause un problème. Je penserais qu'il est extrêmement improbable qu'une doctorante entraîne un impact de performance mesurable dans une situation mondiale réelle. P>
Par défaut, DOCStrings sont présents dans le fichier vous auriez pu La session de shell suivante ...: p> Notez que, puisque nous avons utilisé .pyc code> bytecode et sont chargés d'eux (les commentaires ne sont pas). Si vous utilisez
python -oo code> (le drapeau
--OOO code> signifie "optimiser intensément", par opposition à
-o code> qui signifie "optimiser légèrement ), vous obtenez et utilisez des fichiers
.pyo code> au lieu de fichiers code> .pyc code>, et ceux-ci sont optimisés en omettant les docstrations (en plus des optimisations effectuées par
-o code>, qui retirez
affirmez les instructions code>). Par exemple, envisagez un fichier
foo.py code> qui a:
-o code> premier, le
.pyo code> Le fichier était de 327 octets - même après avoir utilisé
--OOO code>, car le fichier
.pyo code> était toujours autour et Python n'a pas reconsuré / écrasé, il a simplement utilisé l'existant . Supprimer le
existant .pyo code> (ou, équivalent,
toucher foo.py code> de sorte que python connaisse le
.pyo code> est "hors de date") signifie que Python la reconstruit (et, dans ce cas, économise 123 octets sur disque, et un peu plus lorsque le module importé - mais tous
.__ doc __ code> Les entrées disparaissent et sont remplacées par
Aucun code>). P> P>
Au fait, des chaînes autonomes qui ne sont pas des doctorants (pas au sommet de fonctions, de classes ou de modules) génèrent Aucun code à tout niveau d'optimisation. Ils ne sont pas dans les fichiers .pyc ou .pyo. Ils sont vraiment Commentaires multi-lignes b>.
do python docstrings et commentaires sont stocké en mémoire lorsque le module est chargé? P> blockQuote>
docstrings sont compilés dans le fichier .pyc et sont chargés en mémoire. Les commentaires sont rejetés pendant la compilation et n'ont aucun impact sur quoi que ce soit à l'exception de la durée supplémentaire insignifiante prise pour les ignorer lors de la compilation (ce qui ne se passe une seule fois après tout changement de fichier .PY, à l'exception du script principal qui est re-compilé à chaque fois qu'il est courir). p>
Notez également que ces chaînes ne sont conservées que si elles sont la chose première em> dans le module, la définition de la classe ou la définition de la fonction. Vous pouvez inclure des chaînes supplémentaires à peu près n'importe où, mais elles seront jetées pendant la compilation, tout comme les commentaires sont. P>
Juste pour clarifier, Docstrings ne sont pas des commentaires. Ils sont similaires et servent des objectifs similaires, mais la docstring est en fait un attribut de la fonction / objet, alors que je ne pense pas que les commentaires sont accessibles d'une manière tout-temps autre que la lecture du fichier .py lui-même.
Combien de mémoire la peur qui pourrait utiliser? Plus de 1 octet par caractère? Est-ce que vous programmez une Timex Sinclair 1000?