Académique Documents
Professionnel Documents
Culture Documents
Guillaume Wisniewski
guillaume.wisniewski@limsi.fr
septembre 2010
R
esum
e
Ce document a pour objectif de presenter rapidement
la syntaxe de Python ainsi que certaines constructions
et biblioth`eques que nous utiliserons dans ce cours. Une
introduction plus detaillee au langage est disponible `a
lurl http://docs.python.org/tutorial/.
Ex
ecuter un programme python
2
2.1
Types standards
Type de base
Python est un langage type dynamiquement : le type dune variable est determine
par linterpreteur au moment de lexecution et na pas besoin detre declare :
Ces notes sont bas
ees sur une pr
esentation de Christopher Burns et Ga
el Varoquaux `
a
Scipy09 http://conference.scipy.org/static/wiki/python4science -2x1.pdf
On remarquera que :
le marqueur de fin de ligne est le retour chariot et non le point virgule comme
dans la plupart des autres langage ;
le caract`ere # permet dindiquer un commentaire ;
il est possible deffectuer plusieurs assignations simultanement.
2.2
Collections
Listes
Les listes peuvent stocker, de mani`ere ordonnee, des elements de differents types.
Il est possible :
dacceder directement `
a un element
In [4]: r = [1, 2, 3, 7]
In [5]: r[2]
Out[5]: 3
In [6]: r[-1]
Out[6]: 7
In [11]: r[-3]
Out[11]: 2
2.2.2
Des dictionnaires
2.2.3
a
a
#
a
= Mine
= "Chriss"
cha^
nes sur plusieurs lignes
= Mine
and not his
a = """Mine
and Chriss"""
split(sep) retourne la liste des mots contenus dans une chane de caract`eres
en supposant que ceux-ci sont separes par sep. Si sep nest pas fournit split
consid`ere que les mots sont separes par un ou plusieurs espaces.
Structure de contr
ole
3.1
Conditions
In [23]: if a == 1:
....:
print 1
....: elif a == 2:
....:
print 2
....: else:
....:
print "beaucoup"
....:
....:
beaucoup
In [19]: a = [1, 2, 3, 5]
In [20]: 2 in a
Out[20]: True
# pour les dictionnaires in teste lexistence dune cl
e
In [21]: b = {"name": "Guillaume", 2:3}
In [22]: 2 in b
Out[22]: True
In [23]: "Guillaume" in b
Out[23]: False
# pour les string
In [1]: a = "le chat et le chien"
In [2]: "chien" in a
Out[2]: True
In [3]: "poisson" in a
Out[3]: False
3.2
Boucles
La fonction range permet de construire une liste dentiers consecutifs : range(4) = [0, 1, 2, 3].
Il est possible diterer sur nimporte quelle sequence :
In [25]: for word in [cool, powerful, readable]:
....:
print(Python is %s % word)
....:
....:
Python is cool
Python is powerful
Python is readable
et meme :
In [26]: vowels = aeiouy
In [27]: for i in powerful:
....:
if i in vowels:
....:
print i,
....:
....:
o e u
La virgule `
a la fin du print permet deviter le retour chariot.
Python dispose egalement dune boucle while
In [28]: z = 1 + 1j
In [29]: while abs(z) < 100:
....:
if z.imag == 0:
....:
break
....:
z = z ** 2 + 1
....:
....:
3.3
Utilisation avanc
ee des boucles
Pour parcourir une liste en conservant les indices des elements, on peut utiliser
le mot-cle enumerate :
In [12]: word = "le chat"
In [13]: for index, lettre in enumerate(word):
....:
print index, lettre
....:
....:
0 l
1 e
2
3 c
4 h
5 a
6 t
D
efinir des fonctions
Comme pour les structures de controles, le corps de la fonction est delimite par
lindentation. Une fonction peut, de mani`ere optionnelle, renvoyer une valeur
gr
ace au mot-cle return.
Au moment de lappel, linterpreteur sassure que le nombres de param`etres de
la fonction est correct :
In [3]: def double_it(x):
...:
return x * 2
...:
In [4]: double_it(3)
Out[4]: 6
In [5]: double_it()
--------------------------------------------------------------------------TypeError
Traceback (most recent call last)
/people/wisniews/enseignement/enseignement2010/iri/cours/intro_python/<ipython console> in <module>()
Il est egalement possible de definir des param`etres ayant des valeurs par defaut :
In [6]: def double_it(x=2):
...:
return x * 2
...:
In [7]: double_it(3)
Out[7]: 6
In [8]: double_it()
Out[8]: 4
Les objets
10
Une mani`
ere plus dans lesprit de python de coder __str__
"""
return "contains: %s" % " ".join(self.contents)
b = Basket()
b.add("carottes")
b.add("melon")
print b # appel `
a __str__
1. toutes les methodes de lobjet prennent obligatoirement, en premier argument une reference `
a lobjet (correspondant au this en Java ou en C++).
Par convention, cet argument sappelle toujours self.
2. la methode correspondant au constructeur sappelle __init__ ; pour creer
un objet il suffit dappeller le nom de lobjet en passant les param`etres
(b = Basket())
3. il ny a pas de mode dacc`es en python (private, public en java) ; tous
les attributs sont publics1 .
4. si b est une reference sur un objet, on peut acceder `a ses attributs par
b.nom_attribut et appeler ses methodes par b.methode() (en fournissant, si necessaire, les param`etres)
6
6.1
Biblioth`
eque
Syntaxe
Il est possible dutiliser des biblioth`eques, apr`es les avoirs importees par la commande from biblio import fonction1, fonction2. Certaines biblioth`eques
definissent de nouveaux objets qui peuvent etre importes de la meme mani`ere.
Python fournit de nombreuses biblioth`eques de mani`ere standard. On notera
notamment :
os qui contient des fonctions permettant de manipuler le syst`eme de fichier ;
re pour utiliser des expressions reguli`eres ;
codec pour lire des fichiers contenant des accents ;
sys qui permet dacceder au syst`eme et notamment aux entrees et sorties
standards ;
pickle qui permet de sauvegarder (et de recharger) un objet dans un fichier.
Il est possible de definir ses propres biblioth`eques. Si lon suppose que lon
dispose dun fichier corpus.py definissant une fonction build_from_directory
et dune classe Corpus, il est possible dutiliser ceux-ci dans nimporte quel autre
fichier python apr`es avoir fait :
from corpus import Corpus, build_from_directory
Il faut toutefois que les deux fichiers soient dans le meme repertoire.
1 Lencapsulation (qui nest quune question de style !) est assur
ee par un m
ecanisme beaucoup plus puissant, les propri
et
es.
11
6.2
Aide dynamique
La commande dir permet dacceder aux noms des fonctions et des objets contenus dans un module et des methodes dun objet ; la commande dir permet
dobtenir laide correspondant `a une variable, `a une fonction, `a un objet ou `a
un module. Cette aide est definie par les docstring.
In [28]: a = {}
In [29]: dir(a)
Out[29]:
[clear,
copy,
12
fromkeys,
get,
has_key,
items,
iteritems,
iterkeys,
itervalues,
keys,
pop,
popitem,
setdefault,
update,
values]
#sortie tronqu
ee
In [30]: help(a.iterkeys)
Help on built-in function iterkeys:
iterkeys(...)
D.iterkeys() -> an iterator over the keys of D
(END)
Utilisation de fichiers
Louverture et la fermeture dun fichier se font par lintermediaire des commandes open et close :
In [67]: fp = open("holy_grail.txt", mode="r")
In [68]: fp
Out[68]: <open file holy_grail.txt, mode r at 0xea1ec0>
In [73]: fp.close()
13
Out[77]:
["GUARD: Allo, daffy English kaniggets and Monsieur Arthur-King, who is\n",
afraid of a duck, you know! So, we French fellows out-wit you a\n,
second time!\n,
\n,
...
\n]
In [78]: all_lines[0]
Out[78]: "GUARD: Allo, daffy English kaniggets and Monsieur Arthur-King, who is\n"
En utilisant une boucle for, il est possible diterer directement sur les lignes
dun fichier :
In [81]: fp = open("holy_grail.txt")
In [82]: for line in fp:
....:
print line
....:
GUARD: Allo, daffy English kaniggets and Monsieur Arthur-King, who is
afraid of a duck, you know !
second time !
sauvegarde dobjet
[1, 2.0, 3, 4+6j],
(string, uUnicode string),
None}
14
http ://norvig.com/spell-correct.html
15
16