blog.notmyidea.org/python-go.html

123 lines
No EOL
6.7 KiB
HTML

<!DOCTYPE HTML>
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=utf-8">
<link rel="stylesheet" href="./theme/css/main.css" type="text/css" media="screen" charset="utf-8">
<link href="./feeds/all.atom.xml" type="application/atom+xml" rel="alternate" title="Alexis' log ATOM Feed" />
<title>Alexis Métaireau</title>
</head>
<body>
<div id="top">
<p class="author"><a href="./about.html">Alexis Métaireau</a>'s thoughs</p>
<ul class="links">
<li><a href="."></a></li>
</ul>
</div>
<div class="content clear">
<h1>Python ? go !</h1>
<p class="date">Published on Thu 17 December 2009</p>
<p>Cela fait maintenant un peu plus d'un mois que je travaille sur un
projet en <a class="reference external" href="http://www.djangoproject.org">django</a>, et que,
nécessairement, je me forme à <a class="reference external" 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 &quot;logique&quot; et
&quot;simple&quot;. 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>
<div class="section" id="the-zen-of-python">
<h2>The Zen of Python</h2>
<p>Avant toute autre chose, je pense utile de citer Tim Peters, et
<a class="reference external" href="http://www.python.org/dev/peps/pep-0020/">le PEP20</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>&gt;&gt;&gt; import this
The Zen of Python, by Tim Peters
Beautiful is better than ugly.
Explicit is better than implicit.
Simple is better than complex.
Complex is better than complicated.
Flat is better than nested.
Sparse is better than dense.
Readability counts.
Special cases 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 Dutch.
Now is better than never.
Although never is often better than *right* now.
If the implementation is hard to explain, 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="k">do </span>more of those!
</pre></div>
<p>J'ai la vague impression que c'est ce que j'ai toujours cherché à
faire en PHP, et particulièrement dans
<a class="reference external" 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>
</div>
<div class="section" id="comment-commencer-et-par-ou">
<h2>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 class="simple">
<li><a class="reference external" href="http://diveintopython.adrahon.org/">Dive into python</a></li>
<li><a class="reference external" href="http://www.swaroopch.com/notes/Python_fr:Table_des_Matières">A byte of python</a></li>
<li><a class="reference external" 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 class="reference external" href="http://tarekziade.wordpress.com/">Tarek Ziadé</a></li>
<li><a class="reference external" href="http://docs.python.org/index.html">La documentation officielle python</a>,
bien sûr !</li>
<li><a class="reference external" 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 class="reference external" href="http://www.twitter.com/ametaireau">via twitter</a> ou
<a class="reference external" href="http://delicious.com/ametaireau">via mon compte delicious</a>.
Allez jeter un œil
<a class="reference external" 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>
</div>
<div class="section" id="un-python-sexy">
<h2>Un python sexy</h2>
<p>Quelques fonctionnalités qui devraient vous mettre l'eau à la
bouche:</p>
<ul class="simple">
<li><a class="reference external" 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 condition)</li>
<li>Assignation de valeurs multiples (il est possible de faire a,b,c
= 1,2,3 par exemple)</li>
<li><a class="reference external" href="http://docs.python.org/tutorial/datastructures.html">Les listes</a>
sont simples à manipuler !</li>
<li>Les <a class="reference external" 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 class="reference external" 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 class="reference external" 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 class="reference external" 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 PHP qui est un langage à typage faible
dynamique.</li>
</ul>
<p>Cous pouvez également aller regarder
<a class="reference external" href="http://video.pycon.fr/videos/free/53/">l'atelier donné par Victor Stinner durant le Pyconfr 09</a>.
Have fun !</p>
</div>
</div>
</body>
</html>