Tutoriel Python


Présentation

- Python? C'est un serpent? un 357 ? Une pioche d' alpinisme?
- Non c'est de l' humour anglais: Monty-Python.

Comme quoi, il ne faut pas se fier à ce nom agressif. C'est pareil pour les gens: certains ont l' air très méchants, mais en fait ils sont très gentils. D' autres ont l' air tès gentils, mais ils sont très méchants. Trève de morpho-phsychologie,

Python est un langage interprété de haut-niveau.
Il est installé par défaut sur Linux et MacOS.
La force de Python tient en sa parfaite syntaxe de haut niveau, par des fonctions sous-jascentes présentant une interface bien conçue. Sa capacité d'abstraction des couches inférieures rend les autres langages de haut niveau de facto moins séduisants.

Son interpréteur identifie précisément les erreurs. Il les pointe très clairement. Un avantage que n'ont pas ses concurrents puisqu'au mieux ils retournent un numéro de ligne.


Particularités syntaxiques



Comment exécuter un script python?

2 méthodes:

a) Passer son nom en paramètre à l' interpréteur:

 $ python monscript.py

  • En passant un chemin relatif:
    
     $ python test/wxApp1.py
    
    
  • En passant un chemin absolu:
    
     $ python /home/joe/test/wxApp1.py
    
    


  • b) Marquer le script comme exécutable (chmod +x) puis
    Il existe une troisième méthode: certaines applications GNU ont des plugins écrits en Python. Dans ce cas elles se chargent de tout.

    Quelle que soitla méthode d' appel du script, il repasse la main à l'OS quand il a terminé d'excécuter ses instructions. S'il a été lancé par double-clic, la fenêtre d'exécution se referme. Pour éviter celà, on peut invoquer la fonction Python raw_input() qui est l' équivalent du getchar() en C.

    Même si l' extension du script importe peu, mieux vaut garder l' extension .py


    Apprentissage par l' exemple

    Toujours garder un oeil sur la doc.

    01.py Hello world de base et quelques opérations sur les chaînes.
    02.py Script CGI, sans formulaire
    03.py Premier import: le module keyword, pour vérifier si un mot est réservé.
    04.py Exécuter une commande UNIX

    tableaux
    01.py Afficher un tableau
    02.py Initialiser un tableau
    03.py Arguments de ligne de commande
    04.py Passe les lignes d'un fichier dans un tableau

    fichiers
    01.py Lire un fichier
    02.py Ecrire un fichier

    procedures/fonctions
    01.py Première déclaration de procédure, et appel.
    02.py Deux procédures et un main pour opération sur les chaînes de caractères.

    net
    01.py Client HTTP: urllib2.urlopen()
    02.py Client HTTP: httplib.HTTPConnection()
    03.py Client HTTP: urllib2.Request() en spécifiant le User-Agent.
    04.py Client HTTP: passer des valeurs GET à un script CGI
    05.py Serveur HTTP en 3 lignes de code.
    06.py Socket (client HTTP). Try et Except.
    07.py module htmlgen : page web de base générée
    08.py module htmlgen : page complète
    09.py module htmlgen : Liste HTML
    10.py Socket: serveur UDP
    11.py smtp.lib exemple avec prompt FROM To, et msg
    12.py smtp.lib envoi message pré-formaté. sans debug.
    13.py smtp.lib c'est 17.py avec gestion d' exceptions
    14.py Browser HTML basique
    15.py Client valeurs boursières (finances.yahoo.com)

    module
    prog.py module contenant une fonction, appelée par
    test.py avec un import.


    IDE: SCiTe

    Scite un éditeur de programmation complet et flexible qui supporte plusieurs langages. Permet d' exécuter un script en 1 clic.
    Existe ausi sous windoze. Les profs de fac ne jurent que par Emacs... Chacun fait comme il veut hein?
    
     # aptitude install scite
    
    
    Aller dans Menu Debian/Apps/Editors pour lancer.

    Fermer Scite. Installer interface en langue française: ce fichier
    En root, Renommer locale.fr.properties en locale.properties et Copier dans /usr/share/scite. Relancer. Tada!

    Ouvrir un script python, F5 pour éxécuter.


    Applications graphiques

    
     # aptitude install boa-constructor
     The following NEW packages will be installed:
       boa-constructor libwxgtk2.4 libwxgtk2.4-python pychecker
      Need to get 6583kB of archives. After unpacking 24.8MB will be used.
      
    

    Lancer l' animal: Menu Debian/Apps/Programming/Boa
    Pour créer une application:
    1. Créer un dossier pour la nouvelle application
    2. Fenêtre Boa (en haut) Onglet New: cliquer sur WxApp (5e boutton)
    3. Fenêtre Editor (en bas à droite) Enregistrer WxFrame1 et WxApp1.
    4. Sélectionner onglet WxFrame1 et cliquer sur boutton "Frame designer". La fenêtre apparait!
    5. Dans Fenêtre Inspector (à gauche) changer le titre, et cliquer sur "Post the Session" Déplacer et redimensionner la fenêtre à sa guise.
    6. Fenêtre Editor: Enregistrer et cliquer sur la flèche jaune "Run Application"
    7. Tada! L'appli est aussi exécutable avec:
      
       $ python wxApp1.py
      
      
    1. Ajouter un contrôle StatusBar. Passer le Frame en mode design
    2. Dans Boa/Onglet Containers sélectionner wxStatusBar, et cliquer sur le form.
    3. Ajouter au moins un champ au statusbar. Pour celà dans Inspector cliquer sur onglet Props et sur le champ "Fields". Dans le Collection Editor cliquer sur "New" puis éditer le champ "Text" dans l' Editor. Faire un "Refresh" dans le Collection Editor, avant de fermer ce dernier.
    4. Dans Inspector/onglet Props clic sur StatusBar. Enregistrer/Exécuter. De mon point de vue, les applicaions Python ne sont pas plus lentes que celles en C/C++.


    Ecrire un module en langage C

    Un des points forts de Python. En tant que langage de haut niveau, Python s 'appuie sur des modules puissants écrits dans de langages dédiés à la programmation système.

    /* myModule.c */ #include <python2.3/Python.h> // function to be called from python static PyObject* py_myFunction(PyObject* self, PyObject* args) { char* s="bijour!"; return Py_BuildValue("s",s); } // function to be called from python static PyObject* py_myFunction2(PyObject* self, PyObject* args) { double x,y; PyArg_ParseTuple(args, "dd", &x, &y); return Py_BuildValue("d", x*y); } //Bind Python function names to our C functions static PyMethodDef myModule_methods[] = { { "myFunction" , py_myFunction , METH_VARARGS}, { "myFunction2", py_myFunction2, METH_VARARGS}, { NULL, NULL} }; //Python calls this to let us initialize our module void initmyModule() { (void) Py_InitModule("myModule", myModule_methods); }

    Pour compiler le module, il faut impérativement avoir les headers installés:
    
      $ aptitude install python2.3-dev
      $ gcc -shared -I/usr/include/python2.3/ -lpython2.3 -o myModule.so myModule.c
      ou
      $ gcc -shared -lpython2.3 -o myModule.so myModule.c
    
    

    Le script Python qui va appeler ce module:

    #!/usr/bin/python from myModule import * print "Appel de myFunction: ", myFunction(), "." print "myFunction2 dit:", myFunction2(4.0, 5.0), "."




    Liens utiles

    http://www.python.org/
    http://docs.python.org/ref/
    http://sebsauvage.net/python/
    http://wikipython.flibuste.net/moin.py/FrontPage
    http://wikipython.flibuste.net/moin.py/CodesCGI
    http://www.ac-creteil.fr/util/programmation/python/python-intro.html
    http://diveintopython.org/
    http://effbot.org/librarybook/keyword.htm

    Les IDE Python http://wikipython.flibuste.net/moin.py/EditeursEtIDE
    http://www.scintilla.org/SciTE.html


    Télécharger l' intégralité du tuto Python-tuto.tar.gz 41.9 Ko

    2006