Sunteți pe pagina 1din 20

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

S-ar putea să vă placă și