Académique Documents
Professionnel Documents
Culture Documents
Séance 1
Python
Première version 1989 par Guido van
Rossum ●
Développé par la Python Software Foundation.
●
Open source.
Semi-interpreté (bytecode) multiplateformes.
●
Portable.
Orienté objet
●
Dynamique
●
Python
Portable
Linux
MacOS
Windows
Solaris
...
3
Typage dynamique
Python a un système de typage dynamique fort.
●
dynamique = variables non déclarées, non typées (les
types sont inférés au moment de l'exécution)
4
Syntaxe
●
simple, claire, minimale, explicite, uniforme
●
préférences pour des mots (anglais) vs
symboles
5
Implémentations
Comme pour C on a plusieurs compilateurs, de même
pour Python on a plusieurs implémentations
Jython
●
IronPython
●
PyPy
●
6
CPython
Implémentation de référence, par GvR et la PSF
●
Programmée en C
●
Interpréteur
●
Jython
Implémentation en Java
●
http://www.jython.org/
IronPython
Implémentation en C#.
●
Interopérabilité avec les librairies des
●
http://ironpython.net/
PyPy
Implémentation en (sous-ensemble de)
Python ●
Très innovante, rapide, basée sur un compilateur Just
●
In-Time (JIT)
www.pypy.org
PyPI
PyPI = Python Package Index
une collection de packages (>90000) pour
Python https://pypi.python.org/pypi
11
version 2 :
● version courante : Python 2.7.14 non
activement
développée●
12
13
Mode
interactif
Boucle REPL
(comme la shell unix)
LOOP
14
Mode interactif
$ python3
Python 3.5.2 (default, Sep 14 2016, 11:28:32)
on linux
[GCC 6.2.1 20160901 (Red
Hat 6.2.1-1)]
"license"
Type "help", for more
"copyright", "credits" or
information.
>>> 5+5
10
>>> 3==3 EVALUATE
True
>>> print('Hello') Hello
>>> PRINT
READ
15
Mode interactif
16
Mode interactif
Prompt primaire : >>>
Prompt secondaire (pour instructions sur plusieurs lignes) :
...
>>> 5 + 3 * (9
... + 7) / 2
29
>>>
Script
Script = fichier avec séquence
d'instructions Exemple 1 : fichier « test1.py
»
test1.py
print(5 + 5)
print("Hello world")
print("Ciao")
% python3
test1.py 10
Hello world
Ciao
%
18
Script
Exemple 2 : fichier exécutable « test2 »
test2
#!/usr/bin/env python3
print(5 + 5)
print("Hello world")
print("Ciao")
% chmod +x test2
% ./test2
10
Hello world
Ciao
%
19
Options de l'interpréteur
python3 -c "print(5)"
●
Commentaires
Les commentaires commencent par un dièse #, jusqu'à la fin de la
ligne.
>>> x = 5 # Affectation
>>>
Pas de commentaires multi-lignes du style /* ... */
26
Variables
Une variable est créée et définie par
affectation. Une variable est effacée par
l'opérateur del. >>> x = 30
>>> x
30
>>> x = 'hello'
>>>x
'hello'
>>> del x
>>> x
Traceback (most last):
recent call
File line <module>
"<stdin>", 1, in
NameError: name 'x' is
28
>>>
not defined
Variables
Nom des variable (et tous les identificateur) : lettres minuscules (a à
z), lettres majuscules (A à Z), chiffres (0 à 9), caractère souligné (_)
En Python 3 : certains caractères Unicode sont permis (caractères
accentués, alphabets grec et arabe, etc...)
Attention :
● un nom de variable ne doit pas débuter par un chiffre
29
Types
Le système des types en Python est très riche.
Types de haut niveau. Les principaux :
– Booléens (bool)
– Numériques (int, float, complex)
s
– Séquences (list, tuple, ...)
e
l
– Dictionnaires, a.k.a. « Tableaux associatifs » (dict)
b
é
– Ensembles (set)
t
Booléens
Deux constantes, True et False
(attention aux majuscules !)
>>> x = True
>>> type(True)
<class 'bool'>
>>> type(x)
<class False
>>> 3 'bool'>
> 5
34
Types numériques
Entiers (int), avec précision arbitraire
●
Types numériques
>>> 10 # int
10
>>> 0.6 0.6 # float
>>>
notation scientifique
3.5e-25 # float,
3.5e-25 5j #
>>> 3 + complex
(3+5j)
* 1j # Attention, 1j
et non pas j
>>> 1j (-1+0j)
36
Types numériques
Les opérations principales :
+ addition
- soustraction
* multiplication
/ division
** puissance
// division entière
% modulo
37
Types numériques
Le nom d'un type est souvent aussi
une fonction de conversion :
>>> x x int(6
>>> 6 = .66)
>>> x =
float(2) >>> x
2.0
38
avoir des attributs = des donnés qui appartiennent à l'objet. Les attributs
nom_objet.nom_attribut
Chaînes
Les chaînes (str) sont un type immuable.
Chaîne = séquence de caractères.
>>> s1 = 'spam'
>>> s2 = "foo"
>>> s3 = phrase
'''longue
... sur lignes''
plusieur ' s3
s
... >>>
'longue phrase\nsur
plusieurs\nlignes' >>> s4 = """une
autre
... longue phrase"""
40
Chaînes
Les caractères d'échappement : pour introduire des caractères
spéciaux.
>>> print('J\'ai faim')
J'ai faim
Chaînes
Les chaînes aussi ont des attributs. Certains sont des fonctions :
>>> s = 'spam'
>>> s.upper()
'SPAM'
>>> s.capitalize()
'Spam'
>>> s.find('a')
2
42
Chaînes formatées
Équivalent de la fonction C printf. On a une chaîne de contrôle à
formater, où certaines balises sont remplacées par des valeurs.
Ancienne méthode :
Les séquences sont introduites par le caractère %
Les arguments suivent l'opérateur « modulo » % :
>>> "Hello %s" % "Alice"
'Hello Alice'
>>> "%s a %i ans" % ("Luc", 20)
'Luc a 20 ans'
>>> "La valeur de PI 3.14'
est %.2f" 'La % 3.14159
valeur de PI est
43
Chaînes formatées
Nouvelle méthode :
Le séquence sont du genre {n}, avec n un entier. Les arguments
apparaissent dans la fonction format :
>>> "{0} a {1} ans".format("Luc", 20)
'Luc a 20 ans'
>>> print("{0} {1} {0} {1}
{0}\n{2}".format('une rose', 'est', 'Gertrude
Stein'))
une rose est une rose est une rose
Gertrude Stein
Listes
Collection (mutable) d'éléments de type arbitraire, construite avec
des crochets et des virgules:
>>> liste = ['bleu', 'rouge', 'vert', 'jaune']
Listes
La même syntaxe permet de modifier les éléments d'une
liste :
>>> a = [1, 2, 3]
>>> a[0] = 99
>>> a
[99, 2, 3]
47
Listes
Pour l'extraction d'une sous-liste on utilise la syntaxe liste[début:fin], qui génère une
nouvelle liste avec les éléments compris entre les indices début et fin-1 : >>>
liste = ['bleu', 'rouge', 'vert', 'jaune'] >>>
liste[0:2]
['bleu', 'rouge']
On peut omettre les indices :
>>> liste[2:]
['vert', 'jaune']
>>> liste[:2]
['bleu', 'rouge']
>>> liste[:] # idiome courante pour copier une liste
['bleu', 'rouge', 'vert', 'jaune']
48
Listes
Attention à la différence :
[10, 20, 30,
40, 50]
>>> liste =
>>> liste[1] # un élément
20
49
Listes
Concaténation avec l'opérateur « + » :
>>> a = ['lundi', 'mardi']
>>> b = ['mercredi', 'jeudi']
>>> a + b
['lundi', 'mardi', 'mercredi', 'jeudi']
50
Listes
Opérations qui modifient la liste :
>>> a = [1, 2, 3, 4, 5, 6, 7]
>>> a.append(8) # ajoute un élément au fond
>>> a
[1, 2, 3, 4, 5, 6, 7, 8]
51
Listes
La fonction list.insert(pos, element) ajoute un élément à la
position pos :
>>> >>> 3, 99) a
a.insert(
[1, 2, 3, 99, 4, 5, 6, 7]
Listes
Attention !
L'affectation ne copie pas une liste (étiquettes et objets) :
= [1, 2,
>>> x 3] = x
>>> y
>>> x[0] =
99 >>> y
[99, 2, 3]
53
Tuples
Tuples
L'accès aux éléments et l'extraction de sous-tuples suit la même syntaxe
que les listes :
>>> t = (20, 30, 40)
>>> t[0]
20
Mais :
>>> t[0] = 99
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: 'tuple' object does not support
item assignment
55
Tuples
Listes et tuples
Conversion entre listes et tuples :
57
Structures de contrôle
58
Tests
Les instructions conditionnelles sont introduites par les mots
réservés if...else :
x = 5
parenthèses de la condition
# Il n'y a pas de if x == 5:
print('Vrai print(x) autour « :
') »
# Notez le
print('Faux')
# Notez le « : »
else:
59
60
Comparaisons
Les principaux opérateurs de comparaisons sont :
< inférieur à
<= inférieur ou égal à
> supérieur à
>= supérieur ou égal à
== égal à
!= différent de
in appartenance
61
Comparaisons
Les connecteurs logiques sont des mots : and, or, not
Pas de symboles ! && || !
# Valide
if x == 5:
print 'vrai'
print x
# Erreur
if x == 5:
print 'Vrai' 63
print x
Bloc d'instructions
# Valide, mais pas conseillé !
if x == 5:
print('vrai')
print(x)
else:
print('faux')
print('blah')
Normalement, 4 espaces
(https://www.python.org/dev/peps/pep-0008/#indentation)
64
Bloc d'instructions
Blocs imbriqués :
Bloc d'instructions
66
Boucles
En Python on a la boucle for, mais il est un peu différent de ce qu'on
trouve normalement ailleurs.
Avec for on peut itérer sur les éléments d'un objet itérable (e.g.
list, tuple, dict, ...) = un objet qui peut lister ses éléments
l'un après l'autre .
67
Boucles
Pour reproduire le for traditionnel on peut itérer sur une liste d'entiers :
# Print the squares 0, 1, 4, ... 81
for x in [0, 1, 2, 3, 4, 5, 6, 7, 8,
9]: print(x**2)
68
Boucles
La boucle while :
x = 0
while x < 10:
print(x)
x = x + 1
69
>>> s = input()
bonjour
>>> s
'bonjour'
73
74