PPOOGL
Florent de Dinechin
Python pour les nuls
Python en 30 minutes
Introduction
Grands principes
Python en diagonale
Le reste est dans le manuel
PPOOGL
Introduction
Introduction Grands principes Python en diagonale Le reste est dans le manuel
PPOOGL
La premi`re fois e
Fichier source Toto.py, chier objet Toto.pyc et Toto.pyo mais on sen che python Toto.py excute Toto.py, et parfois cre Toto.pyc e e (mais encore une fois on sen che) Voici le code source : print "Python est plus compact que Java"
PPOOGL
Grands principes
Introduction Grands principes Python en diagonale Le reste est dans le manuel
PPOOGL
Les trucs reposants
Dans tes chiers tu mets ce que tu veux
Une classe, deux classes, pas de classe du tout.
Langage interprt et dition de lien dynamique ee e
Lorsque Python a besoin dun fonction dnie autrepart, il la e charge (et la compile si ncessaire). e Performance encore plus erratique que Java : des acc`s disques e et mme parfois des compilations caches au milieu de votre e e programme
Indentation signiante : au lieu duser la touche AltGr, on use la touche tab. Tout est objet (mme les fonctions etc) e
PPOOGL
Les trucs reposants pour vous, pas pour moi
Langage fortement typ, mais typ dynamiquement e e
Rien besoin de dclarer e Si vraiment on veut dclarer un objet on fait a=None (non e typ) e
Donc, pas de notion de porte lexicale e
(` suivre) a
PPOOGL
Python en diagonale
Introduction Grands principes Python en diagonale Le reste est dans le manuel
PPOOGL
Classes : syntaxe
Dclaration dune classe : e class Case: "Une case de notre super jeu" meteo=None def AfficheToi(self): "Methode daffichage universelle" raise NotImplementedError() Instanciation dun objet de cette classe : a=Case()
PPOOGL
Hritage : syntaxe e
Dnition dune sous-classe : e class CaseMer(Case): "Case maritime, avec un courant et tout" courant=None # TODO: surcharger AfficheToi()
PPOOGL
Hritage multiple e
class A(B,C,D): (...) a=A() a.toto() Pb en cas de surcharge : sil y en a plusieurs, cest quel toto() quon appelle ? Rponse : le premier dans une recherche en profondeur e dabord, de gauche ` droite. a
Dabord on cherche toto() dans A puis dans B puis dans toutes les surclasses de B puis dans C, puis dans toutes les surclasses de C etc
PPOOGL 10
Autres subtilits de lOO e
class A: def f(self): self.g() def g(self): print "Bonjour" class B(A): def g(self): print "Au revoir" a=A() b=B() a.f() b.f()
... donc il faut se mer. e Exercice : traduire ceci en Java (qui aura le mme comportement). e
PPOOGL 11
Autodocumentation (introspection)
Tout est objet, et donc tout hrite (entre autres) de la cha e ne de documentation doc
Syntaxe pour la dnir pour les fonctions et pour les classes e Par dfaut, la documentation dun objet est celle de sa classe e
pydoc : outil qui fait des (genre de) pages man ou HTML ` a partir de ces cha nes. Voir aussi les fonction str (conversion de nimporte quel objet en cha de caract`res), dir (liste le contenu de nimporte quel ne e objet), type (done son type), etc.
PPOOGL
12
Modules et Paquetages
Un module cest un chier un paquetage cest un rpertoire avec un chier e qui dnit les modules quil contient (exemple e /usr/lib/python/xml/). init .py
Rien ` voir avec la hirarchie des classes, menn je serais a e vous je les ferais correspondre Il ya un chemin (path) de recherche des modules En pratique les modules standards sont tous ` plat dans a /usr/lib/python Pas besoin de dclarer quune classe Toto fait partie dun e paquetage projetLala.tata
Plus facile quen Javal de rorganiser le code apr`s-coup e e Moins de pression sur vous pour rchir ` lavance e e a
PPOOGL
13
Paquetages et nommages
Le nom complet dune classe est paquetage.Module.Class Le nom complet dun membre est paquetage.Module.Classe.membre
la fonction sinus : math.sin(1)
Le mot-cl import : importe dans lespace de nommage e courant
import math math.sin(1) est OK from math import sin ou bien from math import * sin(1) est OK
PPOOGL
14
Quelques conventions
Jai limpression quen Python tout le monde crit en e minuscules Vous faites bien ce que vous voudrez.
PPOOGL
15
Pourquoi je crois pas ` Python pour PPOOGL a
En Python il ny a pas moyen de dnir un membre priv. e e Ctait bien la peine. e
Les membres avec deux underscore devant sont un peu cachs e (presque privs mais cest un bricolage). e
En Python il ny a pas moyen de dnir un membre statique. e Ctait bien la peine. e En Python il ny a pas moyen de dnir un membre abstrait. e Ctait bien la peine. e En python on compte sur les programmeurs pour tre bien e levs. Zont jamais vu de L3IF. e e Bref. Python fait trop conance aux programmeurs, et ninvite pas ` la modlisation pralable. a e e
PPOOGL
16
Quelques trucs mieux quen Java
Listes, tuples et dictionnaires faciles ` utiliser a Itrateurs e
for variable in truc marche pour truc tant une liste, un tuple, une cha un e ne, dictionnaire... (cach derri`re, cest de lorient-objet) e e e gnrateurs comme range(17,42) e e (Tout cela existe en Java mais faut voir lusine ` gaz) a
PPOOGL
17
Le reste est dans le manuel
Introduction Grands principes Python en diagonale Le reste est dans le manuel
PPOOGL
18
Rfrences ee
Dive into python (existe en franais, install par dfaut par c e e Ubuntu) Python tutorial et Python Library reference
PPOOGL
19