.. default-role :: literal

Prise en main
==============

L'objectif de ce cours est de vous apprendre à programmer en
:term:`python`. Ce cours a été fait avec :term:`sphinx`, l'outil de
gestion de documentation en python utilisé pour documenter python lui-même.

Pour plus d'information : :doc:`docutils`

Avec python :

- vous n'avez pas grand chose à savoir pour arriver à faire beaucoup de choses,

- vous allez pouvoir travailler de manière

  - entièrement autonome
  - rapide
  - agile (au sens des méthodes agiles)

- vous allez progresser rapidement

- aucune connaissance préalable en programmation n'est requise

- le hello world en une ligne::

    python -c "print 'hello'"

- rendre un fichier exécutable et ajouter le she bang::

   #!/usr/bin/env python
   print "hello"

.. note:: lorsqu'on lance python sur un programme, des fichiers
   avec une extension `.pyc` apparaissent.

.. glossary::

    python

        python_ est un langage de programmation généraliste, libre, totalement
        orienté objet, dynamiquement typé, semi-interprété ou, pour certaines
        utilisations optimisées, compilé ou compilé à la volée (JIT).

    sphinx

        sphinx_ est un outil de documentation utilisant la syntaxe wiki
        docutils_

- lorsqu'on lance python sans spécifier de nom de fichier, c'est l'interpréteur
  python qui est lancé (le "prompt")


En python, le dicton le plus répandu est "there must be an obvious way
to do it", (il y a certainement une manière évidente de le faire en
python), ``import this`` permet de se remémorer les
dictons de python. Ce dicton est très différent de l'approche du perl
par exemple, qui présuppose : "there is more than one way to do it",
c'est-à-dire que en gros en perl, on peut le faire n'importe comment,
mais pas en python, enfin en python c'est pas conseillé de le faire à sa
sauce, il y a en général une bonne pratique à découvrir et à mettre en place.

Taper "python" dans votre console

::

    >>> print "hello world"
    hello world

::

    >>> import this

    Beautiful is better than ugly.
    Explicit is better than implicit.
    Simple is better than complex.
    Complex is better than complicated.

    ...

.. seealso::

    les modules, :ref:`namespaces` et la librairie standard
        :doc:`stdlib`

pour avoir de l'aide, taper dans le prompt :

>>> help(function)

Le bon réflexe de chercher ce qui est le plus répandu et le plus utilisé est le 
bon en python : on dit que python est livré "batteries included", ce qui 
signifie que lorsqu'on a un besoin précis il faut chercher dans la librairie 
standard python, puis dans les librairies les plus utilisées en python, puis en 
dernier... le reste, ce qui est disponible. Mais si une librairie connue ne 
fait pas exactement ce qui est attendu et qu'une libraire inconnue du bataillon 
fait exactement ce qui est attendu, (et a l'air de fonctionner 
correctement...), alors il faut choisir la libraire inconnue au bataillon.


usage de python
------------------

à peu près tous les domaines de l'informatique, du scripting système à la génération
de pdf en passant par le développement web et le développement rapide d'applications.


exemple : web server

pour créer un serveur web simplement::

   python -m SimpleHTTPServer 8000 localhost

exemple : utiliser python pour faire un fichier de conf

::

    spam = "eggs"
        actions = [
                ('call_view', 'com.next')
                    ]


.. _python: http://www.python.org
.. _sphinx: http://sphinx.pocoo.org
.. _docutils: http://docutils.sf.net