Vous êtes sur la page 1sur 45

Habib Dhahri

Facult des sciences et Techniques, Sidi bouzid


Habib.dhahri@ieee.org
Types de donnes standard
Types numriques
Squences
Chaines de caractres (exo)
N-uplets et listes (exo)
Dictionnaires (exo)
sets (ou ensemble) (exo)
Structures de contrle
if/else
for/while/do (exo)

2
Introduction

Langage dynamiquement interprt


Dvelopp et maintenu depuis 1989 par
Guido Van Rossum
Open source pour interprteur et
bibliothque standard
Orient objet/Ramasse miettes/Facile
dutilisation (dapprhension)/souplesse
Systme de gestion dexceptions
Nombreux types dutilisation/bibliothque
spcialises

3
Introduction

Administration systme
Applications Web
Extension ou scriptage de
C++/C(cPython)/Java(JyThon)/Net(IronPython)
Interfaces graphiques : usage interactif
Remplacement environnements calcul (Matlab,
IDL, )

4
Introduction

Forces :
Typage dynamique
Langage de script
Clart, compacit, portabilit (multiplateforme, moins de
maintenance, 5 10 fois moins de ligne de code que
C/C++/Fortran/)
Vitesse de dveloppement
Erreurs facilement reprables : pas de pointeurs, pile dappel des
fonctions
Pas de compilation : une seule erreur visible mais reste du code
tourne => robustesse du code
Grande communaut
Faiblesses
Lenteur lexcution
Pas de binaire compil en natif (.pyc)
Peu doptimisation de la part de linterprteur
Pas de vrification statique du typage
Pas de multithreading (mais librairie multiprocessing)
Addiction trs facile

5
Introduction

Peu de ponctuation
Pas de point virgule ";" la ligne
Tabulations/4 espaces significatifs crire un joli
code :
if ($toto==1) then { if toto==1:
print coucou; print coucou
result=2;} result=2
else {result=3;} else :
result=3
En interactif :
~>python
>>> commandes
Rappel de commandes (+sessions prcdentes)
Une instruction par ligne
# pour commenter jusqu la fin de la ligne
Pour sortir de python : Ctrl+d
Scripts avec excution dun fichier (extension .py)
python script.py

6
Script et langage Python

Pas de dclarations des variables (que des


identifiants : dynamiquement typs)
La notion dadresse dun objet nexiste pas
Tous les lments manipulables sont des
objets c.a.d instances de classes, Classes,
Fonctions, Nombres, Chanes de caractres
Identifiants servent rfrencer les objets
Abus de langage : type dun identifiant ==
type de lobjet qui lui est associ

7
Script et langage Python

Identifiant principalement cr avec =, def et class


Identifiants doivent commencer par une lettre ou
un "_" et peuvent contenir lettre, chiffres et le
caractre "_"
Noms de fichiers doivent tre construits comme
des identifiants pour pouvoir tre imports
Les variables doivent tre instancies directement
x => ne marche pas
a=1
a,b=1,2
s = "toto" Identifiant Objet
a=1
a 1
b=2
b 2
b=a
a=a+1
8
Script et langage Python

Variables locals, globals


Les variables globales sont visibles avec globals()
Les locals ne sont visibles que localement
(fonctions, classes), visualisation avec locals()
Module __builtin__
Espace des noms pr-dfinis dans Python (print,
dir, list, dict,str,)
print dir(__builtins__) permet de visualiser la liste
des objets prdfinis

9
Script et langage Python

Il existe deux modes de dclarations d'objets


python (variable, classes, fonctions,)
un module est un fichier ayant une extension de type
.py qui regroupe des dclarations d'objets
(existe galement sous forme de librairie dynamique )

un package est un rpertoire dans lequel est dfini un


fichier __init.py__ regroupant un ensemble de
modules ou de sous-packages
(organisation en sous-rpertoires possible)

La localisation des modules et des packages est


dfinie par la variable d'environnement PYTHONPATH

10
CERTAINES fonctions basiques ne figurent pas dans les instructions de
python, mais sont disponibles dans les bibliothques.

1Systme 3. Chanes
3.1 string (chanes) 5. Sauvegarde des
1.1 sys
3.2 unicode (chanes) donnes
1.2 time
3.3 re (expressions 5.1 (c)pickle
1.3 os et os.path
rgulires) 5.2 anydbm
2. Nombres
3.4 curses (affichage 5.3 shelve
2.1 (c)math (trigo, log)
console) 6. Internet
2.2 random (hasard)
4. Collections 6.1 urllib (tlchargement
2.3 decimal
4.1 deque )
4.2 Counter
4.3 OrderedDict

11
Les fonctions spcialises ont t regroupes dans des modules.
import module charge un module appel module.py
module.methode() la mthode doit alors tre prfixe du nom du
module lors de chaque utilisation.
import module as alias permet d'utiliser un alias plus explicite ou
plus court:
>>> import math as M
>>> print (M.pi ) # au lieu de 'print math.pi'
from module import methode charge une mthode prcise du
module, qui ne devra plus tre prfixe
from module import * charge toutes les mthode d'un module, qui
ne devront donc pas tre prfixes.
Attention aux synonymes, comme os.open() et open(), qui ne
requirent pas les mmes paramtres.

12
math :
sqrt
Trigonomtrie et inverse
Exponentielle et logarithme
Arrondis
Constantes e et (pi)
>>import math
>>math.fonction(argument)
ou from math import fonction et fonction(argument)
numpy : applications scientifiques
Tableau : numpy.array()
Matrices : numpy.matrix()
Manipulations de ces objets :
Redimensionner
Concatner
matplotlib
Visualisation 2D

13
Script et langae Python

sys (communication avec linterprteur python)


math (oprations mathmatiques)
os (accs au systme dexploitation)
shutils (fonctions sur les fichiers)
getopt (gestion des options en ligne de commande)
re (expressions rgulires)
logging (gestion de messages, dbogage)
copy (copie de structure complexes)
random (nombres alatoires)
glob (listage de noms de fichiers)
datetime (heure et date)
urllib2 (interaction avec le web)
tempfile (fichiers temporaires)
codecs ( gestion des encodages de texte)
numPy (tableaux)
sciPy (calculs)
mathplotlib (graphiques)

14
dir() liste les modules chargs
dir(module) liste les mthodes et constantes
d'un module charg
module.methode.__doc__ documente la
mthode d'un module charg
print module.__file__ renvoie la localisation
du module sur votre systme
help(module) renvoie des informations sur les
mthodes d'un module
help(module.methode) renvoie des
informations sur une mthode particulire

15
Basiques
Boolens (True ou False)
Numriques
Chaines de caractres
Autres
Squences
(tuple, listes, en plus des chanes de caractres)
Dictionnaires
Ensembles (sets)
Fonctions et mthodes
Classes
Pour connatre le type d'une variable v : type(v)

16
int (entier long par dfaut) : 3,4
( taille max dfinie par la variable [-sys.maxint -1, sys.maxint])
long, entier long (prcision illimite)
float, flottant (bas sur double c++) : 3.13e10, 0.12
complex, nombres complexes : 3.2+2.5j
Opration Rsultat
pow(x,y) x puissance y
divmod(x,y) La paire (x//x,x%y)
c.conjugate() Le conjugu de c (si c )
float(x) Conversion de x en flottant
long(x) Conversion de x en entier long
int(x) Conversion de x en entier
str(x) Conversion de x en chane de caractre
17
Opration Rsultat
abs(x) Norme de x
-x Oppos de x
x%y Reste de la division entire de x par y
x/y Division de x par y
x // y Division entire de x par y
x*y Produit de x et y
xy Diffrence de x et y
x+y Somme de x et y
x ** y x puissance y

18
Opration Rsultat
x<y, x<=y x infrieur (ou gal) y
x>y, x>=y x suprieur (ou gal) y
x == y x gal? y (valeurs)
x is y Mmes objets ?
x <> y, x != y x diffrent de y
x or y, x and y OU et ET logiques
x|y x ou y
x&y x et y
x^ y x ou exclusif y
~x Complment 2 de x
x << y Dcale x de y bits gauche
x >> y Dcale x de y bits droite

19
2 familles :
Non modifiables :
Chaines de caractres on ne peut pas modifier le contenu d'une chaine ou
d'un n-uplet en accdant un lment par son indice
N-uplets (tuples)
Modifiables : listes
Indexation
a=tapis
a[0]=t squences avec indice 1er 0
a[-1]=s -1 dernier lment de la srie
a[2:4]=pi tranche i, j commence au ime fini au kme-1
Copie dune chaine ou squence avec [:]
Squence en pas : a[dbut:fin:pas]

20
Oprations sur les squences
modifiables et non modifiables

Opration Rsultat
x in s True si x s, False sinon
x not in s True si x s, False sinon
s+t Concatnation de s et t
s * n ou n * s Concatnation de s, n fois
s[i] ime lment de s
s[i:j] Tranche entre i et j dans s
len(s) Longueur de s
min(s) Plus petit lment de s
max(s) Plus grand lment de s

21
Squences non modifiables
Dlimitation par des apostrophes, guillemets simples
ou triples :
formation python
Lobjectif
Lobjectif de cette formation python est
Caractres spciaux :\n, \t, \b
Triples guillemets permettent le retour la ligne dans
les chaines : documentation de code
Opration Rsultat
c in s True si caractre c est dans s
unicode : u'blabla'
<, >, ==, Comparaisons alphanumriques rawstring : r'blabla'
!=
zip(a,b) Colle chaines a et b
22
On peut classer les mthodes en plusieurs
catgories :
Gestion des espaces
Gestion des majuscules et minuscules
Test de la nature dune chaine
Recherche et remplacement
Dcoupage et collage de chanes
Formatage
Une nouvelle chaine est cre et renvoye par
les mthodes
L'appel une mthode ne modifie pas la
chaine en elle-mme

23
Mthode Effet
strip() Supprime les espaces en dbut et fin de chaine
rstrip() Supprime les espaces en fin de chaine
lstrip() Supprime les espaces en dbut de chaine
rjust() Justifie le texte droite pour la largeur demande
ljust(width) Justifie le texte gauche pour la largeur
demande
center(width) Centre le texte pour la largeur demande
isspace() Renvoie True sil ny a que des espaces
expandtabs(tabsize) Remplace les tabulations par des espaces

24
Mthode Effet
upper() Remplace les minuscules par des majuscules
lower() Remplace les majuscules par des minuscules
capitalize() Passe la 1re lettre de la chaine en majuscule et les autres
en minuscules
title() Formate comme un titre (1re lettre de chaque mot en
majuscule, les suivantes en minuscules)
swapcase() Inverse les majuscules et minuscules

25
Mthode Effet
startswith(prefix) True si la chaine commence par prefix
endswith(prefix) True si la chaine se termine par prefix
isupper() True si la chaine ne contient que des majuscules
islower() True si la chaine ne contient que des minuscules
istitle() True si la chaine est formate comme un titre
isdigit() True si la chaine ne contient que des caractres
numriques
isalpha() True si la chaine ne contient que des caractres
alphabtiques
isalnum() True si la chaine ne contient que des caractres
alphanumriques

26
Types de donnes standards : les chaines de caractres

Mthode Effet
index(sub) Renvoie lindex de la 1re occurrence de la
chaine sub, exception si pas trouve
rindex() Idem pour la dernire occurrence
find(sub) Comme index mais renvoie -1 si la chaine nest
pas trouve
rfind() Idem pour la dernire occurrence
count(sub) Retourne le nbr doccurrence de la sous-chaine
replace(old, new [,max]) Remplace la sous-chaine old par new, au plus
max fois (par dfaut, remplace toutes les
occurrences)
translate(table Supprime les caractres figurant dans
[,deletechars]) deletechar et remplace tous les autres par leur
correspondance dans table

27
Types de donnes standards : les chaines de caractres

Mthode Effet
split([sep[,max]) Cre une liste de chaine en dcoupant la chane
suivant sep au plus max fois. Par dfaut split
utilise les espaces, tabulations les sauts de ligne
comme sparateur
splitlines([keepend]) Cre une liste en dcoupant la chaine suivant les
sauts de lignes. Ces sauts de ligne sont
conservs si keepend est True
join(list) Concatne tous les lments de list en utilisant
la chaine comme jointure. Tous les lments de
la liste doivent tre des chaines de caractres.

28
Types de donnes standards : les chaines de caractres

Il est possible de crer une chaine en formatant


son contenu avec loprateur %
quivalent printf de C
print "Les chaines formater sont %s et %s"
%(val1,val2)
Les chaines formater sont introduites par le
caractre % suivie du type de variable
Format Signification
%% Le caractre %
%s Chane
%c Caractre
%f Flottant
%e Flottant (notation expo)
%d Entier dcimal
%x Entier hexadcimal
%o Entier octal
29
Types de donnes standards : les chaines de caractres

Les nombres aussi se formatent, ce qui est utile


pour le nombre de chiffres significatifs. Ceci est de
la forme [flag][taille][.presision] ex :
>>> print "val = %8.4f" %5.787767
val = 5.7878

Flag Signification
0 Chaine remplie de 0 gauche
+ Mettre un + devant les nombres positifs
Mettre un espace devant les nombres positifs
# Utiliser le format python pour notations
hexadcimales et octales

30
Types de donnes standards : N-uplets et listes

Tuples sont des squences non modifiables, entre


parenthses ou suite de valeurs spares par des
virgules :
(a, b, c)
1,2
(1,) : seul manire de dfinir un tuple un seul lment
(1,["k7",1,-0.7],4.5,"z")

Listes sont des squences modifiables, entre [] :


[a, (1,2), Python]
[(3,), (5,),] : possibilit de mettre une virgule aprs
dernier lment

31
Types de donnes standards : N-uplets et listes

Opration Rsultat

len(x) Taille de la squence x

s[i]=x Affecte la valeur x au ime lment de s

del s[i] Supprime le ime lment de s

s[i:j]=t Remplace la tranche i:j par la squence t

del s[i:j] Supprime la tranche i:j de s

s += t Ajoute le contenu de t la fin de s

u=s+t Renvoie une nouvelle liste u dont le


contenu est la concatnation de s et de t

32
Types de donnes standards : N-uplets et listes

Mthode Rsultat
append(x) Ajoute x en fin de liste
insert(i,x) Ajoute x lindex i
pop(i) Retourne et supprime llment dindex i ou le dernier
si i non prcis
remove(x) Supprime le 1er lment de valeur x
count(x) Retourne le nombre doccurrences de x
index(x) Retourne lindex du 1er lment de valeur x
reverse() Renverse la liste
sort([func]) Trie la liste. Une fonction de comparaison peut tre
donne

33
Types de donnes standards : N-uplets et listes

Si vous copiez une liste dans une autre avec


l'oprateur '=', les deux listes pointent sur la
mme zone mmoire
Toute modification faite sur l'une des listes impacte l'autre

Pour copier une liste : lnew= linit[:]

34
Types de donnes standards : les dictionnaires

Fonctionnent par correspondance clef / valeur


Un dictionnaire est reprsent avec des accolades, sous la forme
suivante {1:Formation,2:Python,3:Lapp}
(clefs :1,2,3 ; valeurs : Formation', 'Python',Lapp' )
Les clefs peuvent tre de type numrique, chaine de caractres ou
N-uplets, mais pas de type dictionnaire ou liste
Les valeurs sont de type quelconque
On peut faire une liste de dictionnaires
Lordre des lments nest pas conserv en manipulant les
dictionnaires
Opration Rsultat
len(a) Nombre de valeurs dans a
a[k] Valeur de la clef k
a[k] = v Assigne la valeur v la clef k
del a[k] Supprime la valeur a[k] de a
k in a True si existe valeur associe la clef k
k not in a True si aucune valeur associe la clef k
35
Types de donnes standards : les dictionnaires

Mthode Effet
keys() Renvoie la liste des clefs du dictionnaires
values() Renvoie la liste des valeurs du dictionnaires
items() Renvoie la liste des couples (clefs:valeur) du
dictionnaires
has_key() Vrai si existe valeur associe la clef k
get(k[,default]) Retourne la valeur associe la clef k ou default si
pas de valeur
clear() Vide le dictionnaire
copy() Retourne une copie de surface du dictionnaire
update(dict) Met jour le dictionnaire partir dun autre
dictionnaire

36
Types de donnes standards : les chaines de caractres

Les valeurs formater peuvent tre introduite dans la


chaine avec la syntaxe %(nom) format
Le nom fait rfrence la valeur dun dictionnaire
associ la clef nom
Ceci est utile quand on a changer plusieurs fois un
nom par des valeurs diffrentes
>>> a = "Le %(legume)s est un %(variete)s "
>>> valeurs = {'legume':'poireau', 'variete':'allium'}
>>> print a % valeurs
Le poireau est un allium.
>>> valeursII = {'legume':'concombre', 'variete':'cucurbitacee}
>>> print a % valeursII
Le concombre est un cucurbitacee.

37
Types de donnes standards : les dictionnaires

Si vous copiez un dictionnaire dans un autre


avec l'oprateur '=', les deux dictionnaires
pointent sur la mme zone mmoire
Toute modification faite sur l'un des dictionnaires impacte l'autre

Pour copier une liste : dnew= {}


dnew.update(dinit)

38
Types de donnes standard : les sets

Avant python 2.4 :


>>> import sets
>>> b=sets.Set(.)

Un set est une collection non ordonne dobjets sans


doublon
Le module sets existe avec les deux classes suivantes :
set (modifiable)
et imutableSet (non modifiable)
Un ensemble peut tre cr partir dune liste, dun
dictionnaire, dune chaine ou un tuple. Si des doublons
ventuels existent, ils seront alors absents de
lensemble
Ex : >>> a="seed"
>>> b=set(a)
>>> print b
set(['s', 'e', 'd'])
39
Types de donnes standard : les sets

Mthode Effet
add(elt) Ajoute un lment lensemble
remove(elt) Retire un lment de lensemble
pop() Retire un lment au hasard de lensemble et le renvoie
union(s) Renvoie lunion de lensemble original et de s
intersection(s) Renvoie lintersection de lensemble original et de s
difference(s) Renvoie la diffrence entre lensemble original et s
issubset(s) Renvoie True si lensemble original est un sous
ensemble de s, False sinon
issuperset(s) Renvoie True si lensemble original contient, False sinon

s = s1.union(s2) s = s1 + s2
s1.update(s2) s1 |= s2
s = s1.intersection(s2) s = s1 & s2
S1.intersection_update(s2) s1 &= s2
s = s1.difference(s2) s = s1 - s2
s1.difference_update(s2) s1 -= s2
40
Structures de contrle

Tests (if, elif et else)


Boucles (for, while)
Gestions dexceptions (do, until)
Contrairement au C++, les variables cres
dans les structures sont accessibles
lextrieur de celles-ci
Par contre, les variables cres dans les
fonctions, les mthodes et les classes ne sont
accessibles qu lintrieur de celles-ci

41
Structures de contrle

Tester une valeur :


if a==1 (test1):
print "a est bien egal a 1"
elif a==2 (test2):
print "a est bien egal a 2"
else:
print "a est egal a ",a

Les blocs sont excuts en fonction de la valeur de


a
if est la condition, elif une(des) alternative(s) et else
si aucune condition prcdente nest respecte
pas dinstruction de type switch

42
Structures de contrle

for : itration sur valeurs dune squence dfinie ou


dfinir >>range(4)
for i in range(j,k): (de j k-1) [0, 1, 2, 3]
>>range(3,7)
for valeurs in list: (boucle sur valeurs de la liste) [3, 4, 5, 6]
for keys in dict: (boucle sur clefs du dictionnaire) >>range(7, 4, -1)
[7, 6, 5]
while : itration tant que condition vrifie
while test:
#corps de la boucle

break permet de sortir de la boucle


continue permet de passer litration suivante
Pas de do ou until :
while true:
#corps de la boucle
If condition_sortie
break
43
Structures de contrle

Boucle sur les lments d'une liste:


liste=[("janv",31),("fev",28),("mars",30),]
for mois,nJour in liste:

mois est le premier lment de chaque n-uplet
nJour est le second lment de chaque n-uplet

liste=["janv","fev","mars",]
for i,mois in enumerate(liste):

i est l'indice de l'lment
mois est la valeur de l'lment

44
Structures de contrle

Syntaxe concise de construction et lisibilit


Nouvel objet peut tre cr (conseill)
Simplification des boucles for produisant liste
Exemples :
Une liste Deux listes
>>> liste = [1, 3, 5] >>> liste1 = (1, 2, 3)
>>> [3*x for x in liste] >>> liste2 = (a, b)
[3, 9, 15] >>> [(a,b) for a in liste1 for b in liste2]
>>> [3*x for x in liste if x [(1, a), (1, b), (2, a), (2, b), (3, a), (3, b),
>2] ]
[6, 15] >>> [(a,b) for a in liste1 for b in liste2 if a%2]
>>> [3*x for x in liste if [(1, a), (1, b), (3, a), (3, b), ]
x<1]
[]

45

Vous aimerez peut-être aussi