transparents - Fabrice Maurel

publicité
La Programmation Orientée Objet
(POO ou P2O)
Python : approfondissement
Licence 2 – premier semestre
Fabrice Maurel
[email protected]
Bat. Science 3 – Bureau 364 – 02 31 56 73 98
Le comment
Cours : 13 séances de 1h
●
TD : 9 séances de 1,5h
●
TP : 9 séances de 1,5h
●
1ers TD et TP en semaine 2 (semaine du 15 octobre)
●
Évaluation :
Devoir maison
– Examen sur machine
– Examen écrit
–
Le où
●
Ma page :
–
●
La page de Jerzy Kaczmarczuk :
–
●
http://users.info.unicaen.fr/~karczma/matrs/PyObj/
La documentation officielle (intégrée dans idle) :
–
●
http://users.info.unicaen.fr/~fmaurel/html/l1-2-pro/l2.html
http://www.python.org/doc/
D'autres ressources sont directement sur ma
page
Chapitre 0
RAPPELS DE PYTHON
Présentation Python
●
Portable (Unix, MacOs, Windows...)
●
Gratuit et utilisable dans les projets commerciaux
●
●
Syntaxe très simple et types de données évoluées (3 à
5 fois plus court que C ou C++)
Gestion automatisée de la mémoire (mécanisme de
comptage de références)
●
Système d'exception pour la gestion des erreurs
●
Dynamiquement typé
●
Interprété
●
Extensible
●
Bibliothèque standard complète
Premier pas (1)
●
Typage dynamique
●
●
●
●
●
●
Séparateur décimal : .
Division Euclidienne ou décimale : /
Modulo : %
Puissance : **
type (objet) : retourne le type de l'objet
Affectation
●
●
●
●
Simple : var = val
Multiple : var1 = var2 = var3 = val
Parallèle : var1,var2,var3 = val1,val2,val3
Combinée : +=, *=, /=, -=
Premier pas (2)
●
●
●
Comparaison : ==, !=, >, <, >=, <=
Entrées / sorties : print (expression suivie de ,
pour ne pas sauter de ligne) / input ou raw_input
Limite des instructions et des blocs définie par la
mise en page (ne pas mélanger tabulation et
caractère d'espacement !) :
Ligne d'entête :
première instruction
................................
dernière instruction
Ligne d'entête : une seule instruction
Premier pas (3)
●
Commentaires : #...................
●
Extension conseillée pour un fichier python : .py
●
# -*- coding:Latin-1 -*- ou # -*- coding:Utf-8 -*-
●
Importation de modules (math, random, ...) :
–
–
–
●
import module (==> module.nomFonction)
from module import nomFonction
from module import *
Éditeurs conseillés sous Linux :
–
–
Idle + F5
Emacs + python nomprogramme
Les fonctions
def nomDeLaFonction(p1=v1,p2=v2,...):
"description de la fonction"
instructions
return val (optionnel !)
Attention : passage automatiquement par valeur pour les entiers,
les flottants et les séquences non mutables mais
automatiquement par référence pour les séquences mutables.
●
Nombre de variable arbitraire : def f(*args)
●
Corps d'un programme python :
if __name__ == "__main__":
nomDeLaFonction(p2=v3,p1=v4)
Principaux types de données (1)
●
Données numériques (mutables) :
–
–
–
●
Integer
Long (nombre de chiffre significatif quelconque
limité uniquement par la taille de la mémoire
disponible sur l'ordinateur utilisé)
Float (3.14, 10., .001, 1e100, 3.14e-10)
Données alphanumériques (non mutables) :
–
String
s="chaine" ou s='chaine'
–
Opérateur de concaténation : chaîne1+chaîne2
–
Opérateur d'appartenance : in chaîne
–
Divers sur les chaînes de caractères
●
Concaténation : "a"+"b"
●
Répétition : "a"*4
●
Indexage de ch : de 0 à len(ch)-1
●
Accès à 1 élément de ch : ch[index]
●
Extraction d'un slice : ch[n:m],ch[:m],ch[n:]
●
Quelques fonctions intégrées : len, float, int
●
opérateur de formatage : %
●
Caractères spéciaux : \n, \t, \b ...
Structures de contrôle (1)
●
Conditionnelle :
if condition :
instructions
elif condition :
instructions
else :
instructions
●
L'instruction while :
while condition:
instructions
●
Instruction de sortie forcée d'une boucle : break
Gestion des erreurs
●
Mécanisme de traitement des exceptions :
try:
instruction1 sous réserve
except:
instructions2 si erreur pendant instruction1
else:
instructions3 si pas d'erreur pendant instruction1
●
Lever une exception :
raise nomException, "message optionnel"
Exemple
le typage, les exceptions, les entrées/sorties,la
boucle while
C1ex01.py - maFonction1()
Principaux types de données (2)
●
Les autres séquences
–
Les listes (mutables) :
●
●
●
●
–
List
l=[1,2,3,"chaine",[1,4],3.14,4,5]
Opérateur de concaténation : +
Constructeur de liste : l=range(deb,fin,pas)
Les tuples (non mutables):
●
●
●
Tuple
t=(1,2,3,"chaine",[1,4],3.14,4,5)
Opérateur de concaténation : +
Divers sur les listes / les tuples
●
●
Concaténation, répétition, indiçage, accès et slicing
identique au chaîne.
Les listes sont modifiables (potentiellement par
slicing avancé : insertion, suppression,
remplacement de tranches)
●
Si l1=[1,2,3], l2=l1 ne produit pas une copie de l1 !!!
●
Création d'une copie de l1 : l2=l1[:]
●
Fonctions intégrées : len, del
●
Les tuples ont les mêmes propriétés que les listes à
l'exception de celles qui peuvent provoquer une
modification.
Structures de contrôle (2)
●
L'instruction for élément in séquence
–
–
–
–
–
●
L'itération traite successivement tous les éléments
d'une séquence donnée (caractères d'une chaîne,
éléments d'une liste, clés d'un dictionnaire)
for car in "chaîne":print car,
for elem in [1,2,3]:print elem,
for cle in {1:"a",2:"b",3:"c"}:print cle,
for i in range(len(l)) (==> parcours des index de l)
Création originale de liste :
–
[fonction for élément in sequence if booléen]
Exemple
le for, les listes et le passage par référence
C1ex01.py - maFonction2()
Principaux types de données (3)
●
Les dictionnaires (mutables, non
ordonnés) :
Dict
– d={c1:v1,c2:v2,c3:v3}
– Non ordonné ==> la saisie n'implique pas un
ordre des paires clé/valeur
–
Divers sur les dictionnaires
●
Fonctions intégrés : del, len
●
Accès/modification : dico[clé]=valeur
●
●
Parcours possible avec le for clé in dico mais
aucune prévision possible de l'ordre de
traitement des clés.
Fonctions : keys(),values(),get(clé,defaut)...
Exemple
dictionnaire, module, nombre variable
d'arguments
C1ex01.py - maFonction3()
Gestion des fichiers
●
Choix du répertoire courant :
from os import chdir
chdir("chemin relatif ou absolu")
●
Ouverture d'un fichier en lecture ou en écriture :
f=open(nomFichier,'a' ou 'r')
●
Fermeture d'un fichier : f.close()
●
Écriture dans un fichier : f.write("chaine")
●
Lecture dans un fichier : t=f.read(nbCar)
●
Lecture ligne à ligne : t=f.readline()
●
Lecture des lignes restantes : t=f.readlines()
Exemple
fichiers, création de listes et introduction à
l'opérateur '.'
C1ex01.py - maFonction4()
Téléchargement