mirror of
https://github.com/almet/notmyidea.git
synced 2025-04-28 19:42:37 +02:00
107 lines
4.7 KiB
Markdown
107 lines
4.7 KiB
Markdown
# Python ? go !
|
|
|
|
Cela fait maintenant un peu plus d'un mois que je travaille sur un
|
|
projet en [django](http://www.djangoproject.org), et que,
|
|
nécessairement, je me forme à [Python](http://python.org/). 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'*évangélisation* auprès des quelques personnes qui veulent bien
|
|
m'écouter.
|
|
|
|
## The Zen of Python
|
|
|
|
Avant toute autre chose, je pense utile de citer Tim Peters, et [le
|
|
PEP20](http://www.python.org/dev/peps/pep-0020/), qui constituent une
|
|
très bonne introduction au langage, qui prends la forme d'un *easter
|
|
egg* présent dans python
|
|
|
|
``` sourceCode bash
|
|
>>> 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't special enough to break the rules.
|
|
Although practicality beats purity.
|
|
Errors should never pass silently.
|
|
Unless explicitly silenced.
|
|
In the face of ambiguity, refuse the temptation to guess.
|
|
There should be one-- and preferably only one --obvious way to do it.
|
|
Although that way may not be obvious at first unless you're Dutch.
|
|
Now is better than never.
|
|
Although never is often better than *right* now.
|
|
If the implementation is hard to explain, it's a bad idea.
|
|
If the implementation is easy to explain, it may be a good idea.
|
|
Namespaces are one honking great idea -- let's do more of those!
|
|
```
|
|
|
|
J'ai la vague impression que c'est ce que j'ai toujours cherché à faire
|
|
en PHP, et particulièrement dans [le framework
|
|
Spiral](http://www.spiral-project.org), mais en ajoutant ces concepts
|
|
dans une sur-couche au langage. Ici, c'est directement de *l'esprit* 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 ?
|
|
|
|
## Comment commencer, et par ou ?
|
|
|
|
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) :
|
|
|
|
- [Dive into python](http://diveintopython.adrahon.org/)
|
|
- [A byte of
|
|
python](http://www.swaroopch.com/notes/Python_fr:Table_des_Matières)
|
|
- [Python: petit guide à l'usage du développeur
|
|
agile](http://www.amazon.fr/Python-Petit-guide-lusage-développeur/dp/2100508830)
|
|
de [Tarek Ziadé](http://tarekziade.wordpress.com/)
|
|
- [La documentation officielle
|
|
python](http://docs.python.org/index.html), bien sûr \!
|
|
- [Les vidéos du
|
|
pyconfr 2009](http://video.pycon.fr/videos/pycon-fr-2009/)\!
|
|
- Un peu de temps, et une console python ouverte :)
|
|
|
|
J'essaye par ailleurs de partager au maximum les ressources que je
|
|
trouve de temps à autres, que ce soit [via
|
|
twitter](http://www.twitter.com/ametaireau) ou [via mon compte
|
|
delicious](http://delicious.com/ametaireau). Allez jeter un œil [au tag
|
|
python](http://delicious.com/ametaireau/python) sur mon profil, peut
|
|
être que vous trouverez des choses intéressantes, qui sait\!
|
|
|
|
## Un python sexy
|
|
|
|
Quelques fonctionnalités qui devraient vous mettre l'eau à la bouche:
|
|
|
|
- [Le chaînage des opérateurs de
|
|
comparaison](http://docs.python.org/library/stdtypes.html#comparisons)
|
|
est possible (a\<b \<c dans une condition)
|
|
- Assignation de valeurs multiples (il est possible de faire a,b,c =
|
|
1,2,3 par exemple)
|
|
- [Les listes](http://docs.python.org/tutorial/datastructures.html)
|
|
sont simples à manipuler \!
|
|
- Les [list
|
|
comprehension](http://docs.python.org/tutorial/datastructures.html#list-comprehensions),
|
|
ou comment faire des opérations complexes sur les listes, de manière
|
|
simple.
|
|
- Les
|
|
[doctests](http://docs.python.org/library/doctest.html?highlight=doctest):
|
|
ou comment faire des tests directement dans la documentation de vos
|
|
classes, tout en la documentant avec de vrais exemples.
|
|
- Les
|
|
[métaclasses](http://www.python.org/doc/essays/metaclasses/meta-vladimir.txt),
|
|
ou comment contrôler la manière dont les classes se construisent
|
|
- Python est [un langage à typage fort
|
|
dynamique](http://wiki.python.org/moin/Why%20is%20Python%20a%20dynamic%20language%20and%20also%20a%20strongly%20typed%20language):
|
|
c'est ce qui m'agaçait avec PHP qui est un langage à typage faible
|
|
dynamique.
|
|
|
|
Cous pouvez également aller regarder [l'atelier donné par Victor Stinner
|
|
durant le Pyconfr 09](http://video.pycon.fr/videos/free/53/). Have fun
|
|
\!
|