Repository with sources and generator of https://larlet.fr/david/ https://larlet.fr/david/
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

article.md 3.6KB

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

Ça faisait longtemps que je voulais écrire un peu là-dessus et puis le temps tout ça... bref je viens de tomber sur deux billets 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 Programmation Python que j'attends depuis quelques semaines et que je compte acheter à Solutions Linux ou gagner :)

Je compte faire des billets de deux natures : les « 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.

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.

Concernant l'optimisation, j'utilise le module profile qui est fait pour ça et qui est lancé 5 fois consécutives pour essayer de faire une moyenne assez satisfaisante.

Profile c'est pas vraiment ce qu'il y a de mieux pour faire des tests apparemment donc j'utilise maintenant timeit sur les judicieux conseils de David Allouche.

Le code est le suivant si vous souhaitez tester chez vous :

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)

Avec vos fonctions foo() dans le fichier string_optim.py pour ce cas précis.

Table des matières des billets à ce sujet