Les ateliers Python comportent des textes de niveaux fort différents :
les premiers textes portaient sur les bases de la programation en
Python et sur la programmation par objets.
Au cours des travaux ultérieurs, nous avons été amenés à creuser
quelques particularités liées de l'implémentation de Python :
les métaclasses, la programmation fonctionnelle et les descripteurs.
Ces derniers textes sont assez techniques. La documentation du module
sqlite3 a été traduite et elle est disponible dans la page.
Pour Tkinter et les expressions régulières, voir les pages
spécifiques qui leur sont consacrées.
initiation au langage Python
Le document relatif à l'initiation à Python
est un outil de travail. Ce n'est pas un tutoriel, tout au plus
un aide mémoire pour l'animateur de l'atelier.
Nous nous somme attachés à bien comprendre le fontionnement de
Python en ce qui concerne la notion de variable, d'alias et
de mémorisation de données. Cela nous a conduit à utiliser une
symbolique originale, qui permet d'expliquer le jeu des
pointeurs de mémoire et le ramasse miette. Un exemple des
schémas utilisé a été repris ci-dessous en guise d'illustration.
Python appartient à la catégories des
langages objets avec classes, comme Java ou C++. En Python
toute donnée est un objet, et chaque objet est l'instance d'une
classe ; cette disposition était déjà celle de Smalltalk.
La conséquence de ceci est que toute classe, en tant qu'objet Python,
est aussi une instance : celle d'une classe particulière dont les
instances sont elles-mêmes des classes. Une telle classe est appelée
une métaclasse. Les métaclasses prennent tout leur intérêt
dans la création de nouvelles classes (déclaration Class ...)
et dans l'instanciation de ces classes définies par l'utilisateur.
Comment python procède-t-il pour retrouver l'attribut
d'une instance ? Un attribut d'instance étant donné, comment
lui affecter une valeur, voire le supprimer ?
Le procédé est moins évident qu'il n'y paraît. S'il est
facilement envisagable lorsque l'attribut a été défini
dans l'instance qui l'utilise, qu'en est-il de la recherche
de l'attribut lorsque cela n'est pas le cas ? Et quel est le
mécanisme mis en route lors d'une affectation, suivant que
l'attribut existe dans l'instance ou non ? Par ailleurs,
peut-on maîtriser la recherche ou l'affectation et redéfinir
le protocole par défaut ?
Trois méthodes,
__get__, __set__ et __delete__
permettent de contrôler la recherche, l'affectation ou la
suppression de l'attribut d'une instance. Les attributs qui
disposent de l'une de ces trois méthodees sont des contrôleurs.
Le document présente et illustre la notion de contrôleur. Il
est largement inspiré du Howto de Python.
Python est en général présenté comme un langage de programmation
par objets. On oublie qu'il développe également les paradigmes
de la programmation fonctionnelle.
Le document est une adaptation libre du document officiel en anglais.
IL comporte une première partie consacrée aux principes et apports de la
programmation fonctionnelle. La seconde partie est consacrée aux
outils mis à disposition par Python pour pouvoir programmer selon ses propres
paradigmes. Au coeur de leur implémention en Python, il y a les
notions d'itérateur et de générateur. Le document aborde les trois
modules où ces concepts sont développés : itertools, functools
et generator.
Le document est une adaptation libre en français de la doc
de l'API sqlite3 de Python3. Le gestionnaire de base de données
sqlite existe
indépendamment de Python. Ce gestionnaire est largement utilisée,
par exemple dans les navigateurs (Firefox, Chrome).
Le document actuel est consacré à l'interface qui existe
entre Python et le gestionnaire. Cette API se présente sous
forme d'un module Python, et celui-ci lui a consacré une doc
officielle.
Nous avons ajouté un texte sur les équivalences entre les strutures
de données reconnues par la base et les structures équivalentes en Python.