blog.notmyidea.org/python-go.html

136 lines
No EOL
8.4 KiB
HTML

<!DOCTYPE html>
<html lang="en">
<head>
<title>Python ? go&nbsp;! - 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>
</ul>
</section>
<header>
<h1 class="post-title">Python ? go&nbsp;!</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&#8217;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&#8217;utiliser), qui
ne cesse de me surprendre. Les premiers mots qui me viennent à l&#8217;esprit
à propos de Python, sont &#8220;logique&#8221; et &#8220;simple&#8221;. Et pourtant puissant
pour autant. Je ne manque d&#8217;ailleurs pas une occasion pour faire un peu
d&#8217;<em>évangélisation</em> auprès des quelques personnes qui veulent bien&nbsp;m&#8217;écouter.</p>
<h2 id="the-zen-of-python">The Zen of&nbsp;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&#8217;un <em>easter
egg</em> présent dans&nbsp;python</p>
<div class="highlight"><pre><span></span><code>&gt;&gt;&gt;<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">&#39;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&#39;</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">&#39;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&#39;</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&#8217;ai la vague impression que c&#8217;est ce que j&#8217;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&#8217;est directement de <em>l&#8217;esprit</em> de
python qu&#8217;il s&#8217;agit, ce qui signifie que la plupart des bibliothèques
python suivent ces concepts. Elle est pas belle la vie&nbsp;?</p>
<h2 id="comment-commencer-et-par-ou">Comment commencer, et par ou&nbsp;?</h2>
<p>Pour ma part, j&#8217;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&#8217;est bien évidemment pas exhaustive et vos
commentaires sont les bienvenus)&nbsp;:</p>
<ul>
<li><a href="http://diveintopython.adrahon.org/">Dive into&nbsp;python</a></li>
<li><a href="http://www.swaroopch.com/notes/Python_fr:Table_des_Matières">A byte of&nbsp;python</a></li>
<li><a href="http://www.amazon.fr/Python-Petit-guide-lusage-développeur/dp/2100508830">Python: petit guide à l&#8217;usage du développeur
agile</a>
de <a href="http://tarekziade.wordpress.com/">Tarek&nbsp;Ziadé</a></li>
<li><a href="http://docs.python.org/index.html">La documentation officielle
python</a>, bien sûr&nbsp;!</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&nbsp;:)</li>
</ul>
<p>J&#8217;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&nbsp;sait!</p>
<h2 id="un-python-sexy">Un python&nbsp;sexy</h2>
<p>Quelques fonctionnalités qui devraient vous mettre l&#8217;eau à la&nbsp;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\&lt;b \&lt;c dans une&nbsp;condition)</li>
<li>Assignation de valeurs multiples (il est possible de faire a,b,c =
1,2,3 par&nbsp;exemple)</li>
<li><a href="http://docs.python.org/tutorial/datastructures.html">Les listes</a>
sont simples à manipuler&nbsp;!</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&nbsp;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&nbsp;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&nbsp;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&#8217;est ce qui m&#8217;agaçait avec <span class="caps">PHP</span> qui est un langage à typage faible&nbsp;dynamique.</li>
</ul>
<p>Cous pouvez également aller regarder <a href="http://video.pycon.fr/videos/free/53/">l&#8217;atelier donné par Victor Stinner
durant le Pyconfr 09</a>. Have fun&nbsp;!</p>
</article>
<footer>
<a id="feed" href="/feeds/all.atom.xml"><img src="/theme/rss.svg" /></a>
</footer>
</div>
</body>
</html>