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.

index.html 8.8KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152
  1. <!doctype html>
  2. <html lang=fr>
  3. <head>
  4. <!-- Always define the charset before the title -->
  5. <meta charset=utf-8>
  6. <title>★ Bonnes pratiques de la programmation en Python — Biologeek — David Larlet</title>
  7. <!-- Define a viewport to mobile devices to use - telling the browser to assume that the page is as wide as the device (width=device-width) and setting the initial page zoom level to be 1 (initial-scale=1.0) -->
  8. <meta name="viewport" content="width=device-width, initial-scale=1"/>
  9. <!-- Fake favicon, to avoid extra request to the server -->
  10. <link rel="icon" href="data:;base64,iVBORw0KGgo=">
  11. <link type="application/atom+xml" rel="alternate" title="Feed" href="/david/log/" />
  12. <link rel="manifest" href="/manifest.json">
  13. <link rel="stylesheet" href="/static/david/css/larlet-david-_J6Rv.css" data-instant-track />
  14. <noscript>
  15. <style type="text/css">
  16. /* Otherwise fonts are loaded by JS for faster initial rendering. See scripts at the bottom. */
  17. body {
  18. font-family: 'EquityTextB', serif;
  19. }
  20. h1, h2, h3, h4, h5, h6, time, nav a, nav a:link, nav a:visited {
  21. font-family: 'EquityCapsB', sans-serif;
  22. font-variant: normal;
  23. }
  24. </style>
  25. </noscript>
  26. <!-- Canonical URL for SEO purposes -->
  27. <link rel="canonical" href="https://larlet.fr/david/biologeek/archives/20060121-bonnes-pratiques-de-la-programmation-en-python">
  28. </head>
  29. <body>
  30. <div>
  31. <header>
  32. <nav>
  33. <p>
  34. <small>
  35. Je suis <a href="/david/" title="Profil public">David Larlet</a>, <a href="/david/pro/" title="Activité professionnelle">artisan</a> du web qui vous <a href="/david/pro/accompagnement/" title="Activité d’accompagnement">accompagne</a><span class="more-infos"> dans l’acquisition de savoirs pour concevoir des <a href="/david/pro/produits-essentiels/" title="Qu’est-ce qu’un produit essentiel ?">produits essentiels</a></span>. <span class="more-more-infos">Discutons ensemble d’une <a href="/david/pro/devis/" title="En savoir plus">non-demande de devis</a>.</span> Je partage ici mes <a href="/david/blog/" title="Expériences bienveillantes">réflexions</a> et <a href="/david/correspondances/2017/" title="Lettres hebdomadaires">correspondances</a>.
  36. </small>
  37. </p>
  38. </nav>
  39. </header>
  40. <section>
  41. <h1 property="schema:name">★ Bonnes pratiques de la programmation en Python</h1>
  42. <article typeof="schema:BlogPosting">
  43. <div property="schema:articleBody">
  44. <img src="/static/david/biologeek/images/logos/bonnes_pratiques_python.png" alt="vignette" style="float:left; margin: 0.5em 1em;" property="schema:thumbnailUrl" />
  45. <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>
  46. <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>
  47. <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>
  48. <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>
  49. <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>
  50. <p>Le code est le suivant si vous souhaitez tester chez vous&nbsp;:</p>
  51. <pre>import timeit
  52. def footime(s, n=1):
  53. t = timeit.Timer(s, 'import string_optim ; reload(string_optim); gc.enable()')
  54. time = t.timeit(n)
  55. print time
  56. footime('string_optim.foo()', n=5)</pre>
  57. <p>Avec vos fonctions <strong>foo()</strong> dans le fichier <strong>string_optim.py</strong> pour ce cas précis.</p>
  58. <h3>Table des matières des billets à ce sujet</h3>
  59. <ul>
  60. <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>
  61. <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>
  62. <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>
  63. <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>
  64. <li><a href="https://larlet.fr/david/biologeek/archives/20061025-benchmarks-map-filter-vs-list-comprehensions/">Benchmarks map, filter vs. list-comprehensions</a></li>
  65. </ul>
  66. </div>
  67. </article>
  68. <footer>
  69. <h6 property="schema:datePublished">— 21/01/2006</h6>
  70. </footer>
  71. </section>
  72. <section>
  73. <div>
  74. <h3>Articles peut-être en rapport</h3>
  75. <ul>
  76. <li><a href="/david/biologeek/archives/20080511-bonnes-pratiques-et-astuces-python/" title="Accès à Bonnes pratiques et astuces Python">Bonnes pratiques et astuces Python</a></li>
  77. <li><a href="/david/biologeek/archives/20061025-benchmarks-map-filter-vs-list-comprehensions/" title="Accès à Benchmarks map, filter vs. list-comprehensions">Benchmarks map, filter vs. list-comprehensions</a></li>
  78. <li><a href="/david/biologeek/archives/20060425-python-et-underscore/" title="Accès à Python : lisibilité vs simplicité">Python : lisibilité vs simplicité</a></li>
  79. </ul>
  80. </div>
  81. </section>
  82. <section>
  83. <div id="comments">
  84. <h3>Commentaires</h3>
  85. <div class="comment" typeof="schema:UserComments">
  86. <p class="comment-meta">
  87. <span class="comment-author" property="schema:creator">szdavid</span> le <span class="comment-date" property="schema:commentTime">21/01/2006</span> :
  88. </p>
  89. <div class="comment-content" property="schema:commentText">
  90. <p>je vais suivre de très près tes prochains posts ; je suis aussi en train de me mettre au python :)</p>
  91. </div>
  92. </div>
  93. <div class="comment" typeof="schema:UserComments">
  94. <p class="comment-meta">
  95. <span class="comment-author" property="schema:creator">kNo&#39;</span> le <span class="comment-date" property="schema:commentTime">22/01/2006</span> :
  96. </p>
  97. <div class="comment-content" property="schema:commentText">
  98. <p>C'est marrant, j'allais suggérer que les billets de cette catégorie apparaissent sur Planet Python-fr, mais je vois que quelqu'un y avait déjà pensé.<br />
  99. <br />
  100. Voilà encore une fois du très très bon boulot, bravo et merci.</p>
  101. </div>
  102. </div>
  103. <div class="comment" typeof="schema:UserComments">
  104. <p class="comment-meta">
  105. <span class="comment-author" property="schema:creator">gml</span> le <span class="comment-date" property="schema:commentTime">22/01/2006</span> :
  106. </p>
  107. <div class="comment-content" property="schema:commentText">
  108. <p>D'ailleurs kNo' si tu vois d'autres blogs qui pourraient apparaitre sur le planet n'hésite pas à me le signaler :)</p>
  109. </div>
  110. </div>
  111. </div>
  112. </section>
  113. <footer>
  114. <nav>
  115. <p>
  116. <small>
  117. Je réponds quasiment toujours aux <a href="m&#x61;ilto:d&#x61;vid%40l&#x61;rlet&#46;fr" title="Envoyer un email">emails</a> (<a href="/david/signature/" title="Ma signature actuelle avec possibilité de chiffrement">signés</a>) et vous pouvez me rencontrer à Montréal. <span class="more-infos">N’hésitez pas à <a href="/david/log/" title="Être tenu informé des mises à jour">vous abonner</a> pour être tenu informé des publications récentes.</span>
  118. </small>
  119. </p>
  120. </nav>
  121. </footer>
  122. </div>
  123. <script src="/static/david/js/larlet-david-3ee43f.js" data-no-instant></script>
  124. <script data-no-instant>InstantClick.init()</script>
  125. </body>
  126. </html>