Initiation Python
Xavier JUVIGNY
Septembre 2009
1 Les bases de Python
1.1 Introduction
1.1.1 Historique
Python est un langage cr´
e´
e par Guido Van Rossum fin 1989 au Centrum
voor Wiskunde en Informatica (CWI) aux Pays-Bas. Le nom du langage fait
r´
ef´
erence `
a la s´
erie britannique Monty Python flying circus dont Guido Von
Rossum ´
etait fan. L’ann´
ee suivante (1990), une premi`
ere version (0.9) est
sortie dans le domaine publique. La derni`
ere version sortie au CWI est la
version 1.2 en 1994.
En 1999, avec la sortie de la version 1.6.1, Python devient compatible
avec la GPL (Gnu Public License). La version actuelle du langage est la
2.6.2. Une version beta de la 3.0 est en cours de d´
eveloppement. Au con-
traire des autres versions, cette version beta casse la compatibilit´
e ascen-
dante pour ´
epurer le langage et enlever les biblioth`
eques standards obsol`
etes
ou redondants.
1.1.2 Aperc¸u
Python est un langage disponible sur un grand nombre de plateformes :
Unix, Windows, Mac, etc. Les sources sont disponibles afin de l’adapter `
a
un grand nombre de machines.
Le site www.python.org centralise les diff´
erentes versions et portage
du langage. On y trouve ´
egalement toute la documentation ainsi qu’un tuto-
rial en anglais, consultables en ligne et en format ´
electronique (pdf).
C’est un langage universel utilis´
e pour un large ´
eventail d’applications :
Infographie (Light and Magic utilise python, Poser, Blender)
Internet (la biblioth`
eque twisted en particuliers)
Calcul scientifique (grˆ
ace aux biblioth`
eques numpy et scipy)
Jeu et loisir (via pygame ou pyKyra)
1
Education (comme langage d’initiation `
a la programmation)
Un nombre toujours plus grand de produits utilise Python. Dans le do-
maine qui nous int´
eresse, des produits de visualisations scientifiques comme
Tecplot (commercial), Paraview ou MayaVi (logiciels libres) poss`
edent une
interface python.
L’ONERA, Airbus, EDF et le CEA ont d´
evelopp´
e des logiciels utilisant
Python (elsA pour l’ONERA, Paramed pour EDF et le CEA).
Python est un langage interpr´
et´
e, ce qui lui permet une certaine soup-
lesse par rapport `
a des langages compil´
es comme le C, le Fortran ou le C++.
N´
eanmoins, cette souplesse se paye par une relative lenteur par rapport aux
langages sus-cit´
es (On peut avoir un rapport de 10 entre Python et un lan-
gage comme le C).
Heureusement, l’int´
erˆ
et du langage, outre sa syntaxe simplifi´
ee, r´
eside
dans sa possibilit´
e d’extension via une interface en C bien fournie et ´
etendue,
permettant de rajouter des modules (biblioth`
eques) ´
ecrits en C directement
utilisables en Python. Cela permet grˆ
ace `
a ces modules ´
ecrits en C de pou-
voir obtenir au final une performance similaire au C ou au Fortran.
1.1.3 Syntaxe
Python a ´
et´
e conc¸u pour ˆ
etre un langage lisible. Il vise `
aˆ
etre visuelle-
ment ´
epur´
e, et utilise des mots anglais fr´
equemment l`
a o`
u d’autres langages
utilisent de la ponctuation, et poss`
ede ´
egalement moins de constructions
syntaxiques que de nombreux langages structur´
es tels que C, Perl, ou Pas-
cal. Les commentaires sont indiqu´
es par le caract`
ere #.
Les blocs sont identifi´
es par l’indentation, au lieu d’accolades comme en
C/C++, ou de Begin ... End comme en Pascal. Une augmentation de l’inden-
tation marque le d´
ebut d’un bloc, et une r´
eduction de l’indentation marque
la fin du bloc courant. Les parenth`
eses sont facultatives dans les structures
de contrˆ
ole :
/ / F o n c t i o n f a c t o r i e l l e en C
int factorielle (int x )
{
i f ( x == 0 )
r e t u r n 1 ;
else
r e t u r n xfactorielle (x1 );
}
# F o n c t i o n f a c t o r i e l l e en p y t h on
def factorielle (x):
i f x == 0 :
r e t u r n 1
else :
r e t u r n xfactorielle (x1)
Voici bri`
evement les autres caract´
eristiques :
Python peut ˆ
etre lanc´
e en mode interactif (comme un shell ´
evolu´
e)
C’est un langage typ´
e ( `
A chaque variable correspond un type), mais
poss´
edant un typage dynamique (et non statique comme en C ou
C++). C’est `
a dire que le type d’une variable est d´
efinie `
a l’ex´
ecution
2
et qu’une variable peut changer de type durant l’ex´
ecution du pro-
gramme.
Python offre une gestion “transparente” de la m´
emoire. Un comp-
teur de r´
ef´
erence (un compteur comptabilisant le nombre de variables,
fonctions, etc. acc´
edant `
a une certaine variable) permet `
a Python de
connaˆ
ıtre le moment o`
u il peut d´
esallouer une variable.
On acc`
ede aux variables automatiquement par adresse (comme en
Fortran), et la notion de pointeur n’existe pas !
Comme Python est un langage interpr´
et´
e, il est possible de modifier
le code dynamiquement, voir d’interpr´
eter une chaˆ
ıne de caract`
ere
comme du code `
a ex´
ecuter.
C’est un langage dit orient´
e objet. Python offre la possibilit´
e de d´
efinir
des classes, des exceptions et poss`
ede la notion d’h´
eritage (dont l’h´
eritage
multiple). Nous y reviendrons.
Contrairement au C++, tout est consid´
er´
e comme des objets, les fonc-
tions et les classes y compris (On peut tr`
es bien concevoir une classe
g´
en´
erant comme instance des classes, ou manipuler des fonctions comme
des variables ordinaires).
Python effectue une compilation dynamique en bytecode afin d’acc´
el´
erer
l’ex´
ecutions de scripts
Il existe des compilateurs externe (exemple, JIT par psyco) perme-
ttant de compiler les scripts avant leurs ex´
ecutions en optimisant le
bytecode.
Python est case-sensitive, c’est `
a dire qu’il est sensible aux majus-
cules et minuscules. La variable Ni et la variable NI sont des variables
diff´
erentes !
1.2 Tour d’horizon du langage
Les commentaires dans Python se font de la mˆ
eme mani`
ere que pour le
shell :
# Ceci est un commentaire
Pour afficher simplement un message ou des valeurs :
print ’2+2 = ’,2+2
La concat´
enation de chaˆ
ınes de caract`
ere se fait simplement :
animal = ’Drom’+"adaire"
On peut aussi r´
ep´
eter facilement un caract`
ere grˆ
ace `
a l’op´
eration de
r´
ep´
etition :
trait = ’-’72 # trait represente une chaine contenant 72 symbols ’
Pour une gestion plus fine des sorties, on peut comme en C formatter les
sorties :
print ’Nb caracteres = %3d\n’%len(a)
Les op´
erations courantes de l’arithm´
etique enti`
ere sont fournies par d´
efaut :
3
(46∗∗157)% (37∗∗156)
Remarquez que la taille des entiers est seulement limit´
ee que par la
m´
emoire disponible sur l’ordinateur.
La d´
efinition des fonctions se fait simplement :
def f ( a , b , c ) :
d = a b
r e t u r n d+ c
On peut d´
efinir simplement des tableaux et acc´
eder `
a ses ´
el´
ements : :
i n v e n t a i r e = [ 3 . 1 4 , 5 , 3+2 j , "Raton laveur" ]
pi = inventaire [0]}
raton = inventaire[1]
numbers = i n v e n t a i r e [ 0 : 3 ]
Il est possible de supprimer un objet ou un module (consid´
er´
e par Python
comme un objet) par l’instruction del :
import math
i n v e n t a i r e = [ 3 . 1 4 , 5 , 3+2 j , "Raton laveur" , math . p i ]
. . .
d e l inventaire
. . .
d e l math
2 Syntaxe du langage python
2.1 D´
efinition des blocs
Un bloc est une partie du code encadr´
ee par des d´
elimiteurs (en C, le
d´
ebut d’un bloc est d´
efini par {et la fin par }). En python, il n’y a pas
vraiment de d´
elimiteurs, mais c’est l’indentation qui sert de d´
elimiteurs.
On utilise l’indentation pour d´
efinir des blocs pour les conditions, les
boucles, les fonctions, les classes, etc.
Exemple :
i f x<0 :
print ’Attention : x est negatif’
x=0
y = math . s q r t ( x )
2.2 Les op´
erateurs bool´
eens
Les op´
erateurs logiques s’´
ecrivent en toutes lettres. On a donc :
– L’op´
erateur and : c’est le et logique, on a donc :
True and True =True
True and False =False
False and False=False
4
– L’op´
erateur or : c’est le ou logique, on a donc :
True or True =True
True or False =True
False or False=False
– L’op´
erateur is not : C’est le ou exclusif logique, on a donc :
True is not True =False
True is not False =True
False is not False=False
– L’op´
erateur not : C’est l’op´
erateur logique de n´
egation :not True =False
not False=True
De mˆ
eme, il existe des op´
erateurs logiques bit `
a bit (mˆ
eme symboles
que le C sauf pour la n´
egation) :
– L’op´
erateur &: C’est le et bit `
a bit : 0b0011 & 0b0101 = 0b0001
– L’op´
erateur |: C’est le ou bit `
a bit : 0b0011 |0b0101 = 0b0111
– L’op´
erateur ˆ: C’est le ou exclusif bit `
a bit : 0b0011 ˆ 0b0101 = 0b0110
– L’op´
erateur ˜: C’est le calcul du compl´
ement (n´
egation bit `
a bit)
˜0b0011 = 4
Les op´
erateurs or et and sont dits parresseux :
aor band cor d(a or b) and (c or d)
2.3 Les conditions
Le branchement selon les conditions est proche de la syntaxe en C
La syntaxe de base : if condition : instruction
On peut rajouter une clause else :if condition : instruction1 else : instruction2
On peut ´
egalement contracter else if en elif :
if condition1 : instruction1 elif condition2 : instruction2 else instruction3
Contrairement au C, il n’existe pas d’instruction switch(...) case....
Soit on remplace cela par une s´
erie de if cond1 : instr1 elif cond2 : instr2 ... soit `
a
l’aide de fonctions lambda (qu’on verra plus tard dans le cours).
Exemple :
# On c a l c u l l a v a l e u r s a b s o l u e d e x :
y=0
i f x<0 :
y = x
else :
y=x
2.4 Les boucles
2.4.1 La boucle while
Elle fonctionne comme en C. Sa syntaxe : while condition : instruction
Exemple :
# C a l c u l du f a c t o r i e l :
def f a c t ( n ) :
5
1 / 18 100%
La catégorie de ce document est-elle correcte?
Merci pour votre participation!

Faire une suggestion

Avez-vous trouvé des erreurs dans linterface ou les textes ? Ou savez-vous comment améliorer linterface utilisateur de StudyLib ? Nhésitez pas à envoyer vos suggestions. Cest très important pour nous !