mirror of
https://github.com/almet/notmyidea.git
synced 2025-04-28 11:32:39 +02:00
151 lines
No EOL
9.2 KiB
HTML
151 lines
No EOL
9.2 KiB
HTML
<!DOCTYPE html>
|
|
<html lang="fr">
|
|
<head>
|
|
<title>
|
|
Python ? go ! - Alexis Métaireau </title>
|
|
<meta charset="utf-8" />
|
|
<meta name="viewport" content="width=device-width, initial-scale=1">
|
|
<link rel="stylesheet"
|
|
href="https://blog.notmyidea.org/theme/css/main.css?v2"
|
|
type="text/css" />
|
|
<link href="https://blog.notmyidea.org/feeds/all.atom.xml"
|
|
type="application/atom+xml"
|
|
rel="alternate"
|
|
title="Alexis Métaireau ATOM Feed" />
|
|
</head>
|
|
<body>
|
|
<div id="content">
|
|
<section id="links">
|
|
<ul>
|
|
<li>
|
|
<a class="main" href="/">Alexis Métaireau</a>
|
|
</li>
|
|
<li>
|
|
<a class=""
|
|
href="https://blog.notmyidea.org/journal/index.html">Journal</a>
|
|
</li>
|
|
<li>
|
|
<a class="selected"
|
|
href="https://blog.notmyidea.org/code/">Code, etc.</a>
|
|
</li>
|
|
<li>
|
|
<a class=""
|
|
href="https://blog.notmyidea.org/weeknotes/">Notes hebdo</a>
|
|
</li>
|
|
<li>
|
|
<a class=""
|
|
href="https://blog.notmyidea.org/lectures/">Lectures</a>
|
|
</li>
|
|
<li>
|
|
<a class=""
|
|
href="https://blog.notmyidea.org/projets.html">Projets</a>
|
|
</li>
|
|
</ul>
|
|
</section>
|
|
<header>
|
|
<h1 class="post-title">Python ? go !</h1>
|
|
<time datetime="2009-12-17T00:00:00+01:00">17 décembre 2009</time>
|
|
</header>
|
|
<article>
|
|
|
|
<p>Cela fait maintenant un peu plus d’un mois que je travaille sur un
|
|
projet en <a href="http://www.djangoproject.org">django</a>, et que,
|
|
nécessairement, je me forme à <a href="http://python.org/">Python</a>. Je prends
|
|
un plaisir non dissimulé à découvrir ce langage (et à l’utiliser), qui
|
|
ne cesse de me surprendre. Les premiers mots qui me viennent à l’esprit
|
|
à propos de Python, sont “logique” et “simple”. Et pourtant puissant
|
|
pour autant. Je ne manque d’ailleurs pas une occasion pour faire un peu
|
|
d’<em>évangélisation</em> auprès des quelques personnes qui veulent bien m’écouter.</p>
|
|
<h2 id="the-zen-of-python">The Zen of Python</h2>
|
|
<p>Avant toute autre chose, je pense utile de citer Tim Peters, et <a href="http://www.python.org/dev/peps/pep-0020/">le
|
|
<span class="caps">PEP20</span></a>, qui constituent une
|
|
très bonne introduction au langage, qui prends la forme d’un <em>easter
|
|
egg</em> présent dans python</p>
|
|
<div class="highlight"><pre><span></span><code>>>><span class="w"> </span>import<span class="w"> </span>this
|
|
The<span class="w"> </span>Zen<span class="w"> </span>of<span class="w"> </span>Python,<span class="w"> </span>by<span class="w"> </span>Tim<span class="w"> </span>Peters
|
|
|
|
Beautiful<span class="w"> </span>is<span class="w"> </span>better<span class="w"> </span>than<span class="w"> </span>ugly.
|
|
Explicit<span class="w"> </span>is<span class="w"> </span>better<span class="w"> </span>than<span class="w"> </span>implicit.
|
|
Simple<span class="w"> </span>is<span class="w"> </span>better<span class="w"> </span>than<span class="w"> </span>complex.
|
|
Complex<span class="w"> </span>is<span class="w"> </span>better<span class="w"> </span>than<span class="w"> </span>complicated.
|
|
Flat<span class="w"> </span>is<span class="w"> </span>better<span class="w"> </span>than<span class="w"> </span>nested.
|
|
Sparse<span class="w"> </span>is<span class="w"> </span>better<span class="w"> </span>than<span class="w"> </span>dense.
|
|
Readability<span class="w"> </span>counts.
|
|
Special<span class="w"> </span>cases<span class="w"> </span>aren<span class="s1">'t special enough to break the rules.</span>
|
|
<span class="s1">Although practicality beats purity.</span>
|
|
<span class="s1">Errors should never pass silently.</span>
|
|
<span class="s1">Unless explicitly silenced.</span>
|
|
<span class="s1">In the face of ambiguity, refuse the temptation to guess.</span>
|
|
<span class="s1">There should be one-- and preferably only one --obvious way to do it.</span>
|
|
<span class="s1">Although that way may not be obvious at first unless you'</span>re<span class="w"> </span>Dutch.
|
|
Now<span class="w"> </span>is<span class="w"> </span>better<span class="w"> </span>than<span class="w"> </span>never.
|
|
Although<span class="w"> </span>never<span class="w"> </span>is<span class="w"> </span>often<span class="w"> </span>better<span class="w"> </span>than<span class="w"> </span>*right*<span class="w"> </span>now.
|
|
If<span class="w"> </span>the<span class="w"> </span>implementation<span class="w"> </span>is<span class="w"> </span>hard<span class="w"> </span>to<span class="w"> </span>explain,<span class="w"> </span>it<span class="s1">'s a bad idea.</span>
|
|
<span class="s1">If the implementation is easy to explain, it may be a good idea.</span>
|
|
<span class="s1">Namespaces are one honking great idea -- let'</span>s<span class="w"> </span><span class="k">do</span><span class="w"> </span>more<span class="w"> </span>of<span class="w"> </span>those!
|
|
</code></pre></div>
|
|
|
|
<p>J’ai la vague impression que c’est ce que j’ai toujours cherché à faire
|
|
en <span class="caps">PHP</span>, et particulièrement dans <a href="http://www.spiral-project.org">le framework
|
|
Spiral</a>, mais en ajoutant ces concepts
|
|
dans une sur-couche au langage. Ici, c’est directement de <em>l’esprit</em> de
|
|
python qu’il s’agit, ce qui signifie que la plupart des bibliothèques
|
|
python suivent ces concepts. Elle est pas belle la vie ?</p>
|
|
<h2 id="comment-commencer-et-par-ou">Comment commencer, et par ou ?</h2>
|
|
<p>Pour ma part, j’ai commencé par la lecture de quelques livres et
|
|
articles intéressants, qui constituent une bonne entrée en matière sur
|
|
le sujet (La liste n’est bien évidemment pas exhaustive et vos
|
|
commentaires sont les bienvenus) :</p>
|
|
<ul>
|
|
<li><a href="http://diveintopython.adrahon.org/">Dive into python</a></li>
|
|
<li><a href="http://www.swaroopch.com/notes/Python_fr:Table_des_Matières">A byte of python</a></li>
|
|
<li><a href="http://www.amazon.fr/Python-Petit-guide-lusage-développeur/dp/2100508830">Python: petit guide à l’usage du développeur
|
|
agile</a>
|
|
de <a href="http://tarekziade.wordpress.com/">Tarek Ziadé</a></li>
|
|
<li><a href="http://docs.python.org/index.html">La documentation officielle
|
|
python</a>, bien sûr !</li>
|
|
<li><a href="http://video.pycon.fr/videos/pycon-fr-2009/">Les vidéos du
|
|
pyconfr 2009</a>!</li>
|
|
<li>Un peu de temps, et une console python ouverte :)</li>
|
|
</ul>
|
|
<p>J’essaye par ailleurs de partager au maximum les ressources que je
|
|
trouve de temps à autres, que ce soit <a href="http://www.twitter.com/ametaireau">via
|
|
twitter</a> ou <a href="http://delicious.com/ametaireau">via mon compte
|
|
delicious</a>. Allez jeter un œil <a href="http://delicious.com/ametaireau/python">au tag
|
|
python</a> sur mon profil, peut
|
|
être que vous trouverez des choses intéressantes, qui sait!</p>
|
|
<h2 id="un-python-sexy">Un python sexy</h2>
|
|
<p>Quelques fonctionnalités qui devraient vous mettre l’eau à la bouche:</p>
|
|
<ul>
|
|
<li><a href="http://docs.python.org/library/stdtypes.html#comparisons">Le chaînage des opérateurs de
|
|
comparaison</a>
|
|
est possible (a\<b \<c dans une condition)</li>
|
|
<li>Assignation de valeurs multiples (il est possible de faire a,b,c =
|
|
1,2,3 par exemple)</li>
|
|
<li><a href="http://docs.python.org/tutorial/datastructures.html">Les listes</a>
|
|
sont simples à manipuler !</li>
|
|
<li>Les <a href="http://docs.python.org/tutorial/datastructures.html#list-comprehensions">list
|
|
comprehension</a>,
|
|
ou comment faire des opérations complexes sur les listes, de manière simple.</li>
|
|
<li>Les
|
|
<a href="http://docs.python.org/library/doctest.html?highlight=doctest">doctests</a>:
|
|
ou comment faire des tests directement dans la documentation de vos
|
|
classes, tout en la documentant avec de vrais exemples.</li>
|
|
<li>Les
|
|
<a href="http://www.python.org/doc/essays/metaclasses/meta-vladimir.txt">métaclasses</a>,
|
|
ou comment contrôler la manière dont les classes se construisent</li>
|
|
<li>Python est <a href="http://wiki.python.org/moin/Why%20is%20Python%20a%20dynamic%20language%20and%20also%20a%20strongly%20typed%20language">un langage à typage fort
|
|
dynamique</a>:
|
|
c’est ce qui m’agaçait avec <span class="caps">PHP</span> qui est un langage à typage faible dynamique.</li>
|
|
</ul>
|
|
<p>Cous pouvez également aller regarder <a href="http://video.pycon.fr/videos/free/53/">l’atelier donné par Victor Stinner
|
|
durant le Pyconfr 09</a>. Have fun !</p>
|
|
</article>
|
|
<footer>
|
|
<a id="feed" href="/feeds/all.atom.xml">
|
|
<img alt="RSS Logo" src="/theme/rss.svg" />
|
|
</a>
|
|
</footer>
|
|
</div>
|
|
</body>
|
|
</html> |