title:      ★ Bonnes pratiques de la programmation en Python
slug:       bonnes-pratiques-de-la-programmation-en-python
date:       2006-01-21 20:09:48
type:       post
vignette:   images/logos/bonnes_pratiques_python.png
contextual_title1:  Bonnes pratiques et astuces Python
contextual_url1:    20080511-bonnes-pratiques-et-astuces-python
contextual_title2:  Benchmarks map, filter vs. list-comprehensions
contextual_url2:    20061025-benchmarks-map-filter-vs-list-comprehensions
contextual_title3:  Python : lisibilité vs simplicité
contextual_url3:    20060425-python-et-underscore

<p>Ça faisait longtemps que je voulais écrire un peu là-dessus et puis le temps tout ça... bref je viens de tomber sur <a href="http://jehaisleprintemps.net/detail.php?id=1303&amp;lang=fr">deux</a> <a href="http://blog.virgule.info/2006/01/21/128-resolutions-2006">billets</a> qui m'ont motivé, apparemment je suis pas le seul à vouloir apprendre/faire partager sur Python. Coïncidence pas si pure que ça, la sortie du livre <a href="http://www.amazon.fr/exec/obidos/redirect?link_code=as2&amp;path=ASIN/2212116772&amp;tag=programmation-21&amp;camp=1642&amp;creative=6746">Programmation Python</a> que j'attends depuis quelques semaines et que je compte acheter à Solutions Linux <a href="http://programmation-python.org/sections/news/sortie-du-livre-et">ou gagner</a> :)</p>

<p>Je compte faire des billets de deux natures&nbsp;: les «&nbsp;bonnes pratiques » et l'optimisation, c'est ce que l'on trouve le moins facilement sur internet (ou alors j'ai mal cherché → commentaires) et c'est souvent assez crucial sur les gros projets.</p>


<p>Je préviens, je ne suis pas un pro et je vous invite à vérifier ce que j'écris par vous même, une astuce d'optimisation peut fonctionner dans une situation et pas dans une autre, tout dépend de votre problématique bien sûr.</p>


<p><del>Concernant l'optimisation, j'utilise le module <a href="http://www.python.org/doc/current/lib/module-profile.html">profile</a> qui est fait pour ça et qui est lancé 5 fois consécutives pour essayer de faire une moyenne assez satisfaisante.</del></p>


<p>Profile c'est pas vraiment ce qu'il y a de mieux pour faire des tests apparemment donc j'utilise maintenant <strong>timeit</strong> sur les judicieux conseils de <a href="http://ddaa.net/blog/">David Allouche</a>.</p>


<p>Le code est le suivant si vous souhaitez tester chez vous&nbsp;:</p>


<pre>import timeit

def footime(s, n=1):
    t = timeit.Timer(s, 'import string_optim ; reload(string_optim); gc.enable()')
    time = t.timeit(n)
    print time

footime('string_optim.foo()', n=5)</pre>


<p>Avec vos fonctions <strong>foo()</strong> dans le fichier <strong>string_optim.py</strong> pour ce cas précis.</p>


<h3>Table des matières des billets à ce sujet</h3>

<ul>
<li><a href="https://larlet.fr/david/biologeek/archives/20060121-optimisation-des-chaines-de-caracteres-en-python/">Optimisation des chaînes de caractères en Python</a></li>
<li><a href="https://larlet.fr/david/biologeek/archives/20060121-formatage-des-chaines-de-caracteres-en-python/">Formatage des chaînes de caractères en Python</a></li>
<li><a href="https://larlet.fr/david/biologeek/archives/20060127-optimisation-des-chaines-de-caracteres-en-python-le-retour/">Optimisation des chaînes de caractères en Python&nbsp;: le retour</a></li>
<li><a href="https://larlet.fr/david/biologeek/archives/20060218-un-template-python-pour-parser-des-arguments/">Un template python pour parser des arguments</a></li>
<li><a href="https://larlet.fr/david/biologeek/archives/20061025-benchmarks-map-filter-vs-list-comprehensions/">Benchmarks map, filter vs. list-comprehensions</a></li>
</ul>
