mirror of
https://github.com/almet/notmyidea.git
synced 2025-04-28 19:42:37 +02:00
112 lines
4.8 KiB
ReStructuredText
112 lines
4.8 KiB
ReStructuredText
Python ? go !
|
|
##############
|
|
|
|
:date: 2009-12-17
|
|
|
|
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
|
|
|
|
.. code-block:: 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 !
|