Vous êtes sur la page 1sur 22

Fonctions

 Les fonctions permettent de reproduire la même tâche


sur des données différentes sans avoir à recopier le
code.

 Elles acceptent des paramètres et retournent des


résultats avec le mot-clé return.

 En Python, il n’y a pas de distinction entre procédure et


fonction : les procédures sont des fonctions qui
retournent la valeur None.

2
Fonctions

 Les fonctions sont des constructions pour structurer les


programmes.
 Elles permettent d’utiliser le code à plusieurs endroits
d’un programme.
def <nom_fonctions>(<liste_paramètres>):
… # instructions (lignes indentées)
 Le corps d’une fonction peut contenir l’instruction return.
Cette instruction termine l'exécution de l'appel de
fonction et "renvoie" le résultat à l'appelant.
 S'il n'y a pas return, la fonction se termine quand le flux
de contrôle atteint la fin de son corps. Elle renvoie
l’objet None 3
Fonctions

 Un paramètre est une entité nommée dans la définition


d’une fonction (ou méthode), décrivant un argument (ou
dans certains cas des arguments) que la fonction
accepte.
 Il n'y a que deux façons de placer des arguments en
python:
 soit grâce à la position des paramètres
 soit grâce à leur nom

4
Paramètres d’une fonction

 Il y a 5 types de paramètres en Python. Les plus utilisés


sont :
 Paramètre positionnel ou nommé (positional or keyword) : Il
peut recevoir une valeur soit en utilisant sa position, soit en
utilisant son nom

 Paramètre nommé uniquement (keyword-only) : Il faut


obligatoirement nommer le paramètre pour lui donner une valeur

 Paramètre positionnel à nombre variable (var-positional): Il


récupère toutes les valeurs supplémentaires des argument
positionnels (dans un tuple) lorsque tous les précédents ont reçu
une valeur

5
Paramètres d’une fonction

 Paramètre nommé à nombre variable (var-keyword) : Il


récupère (dans un dictionnaire) toutes les valeurs
supplémentaires des arguments nommés n'existant pas dans la
signature.

#1ère façon de définir un key_only

def fct(pos_key, *var_pos, key_only, **var_key):


… # corps de la fonction

#2ème façon de définir un key_only

def fct(pos_key, *, key_only, **var_key):


… # corps de la function
6
Paramètres d’une fonction

 Il est possible de définir une valeur par défaut pour les


paramètres positionnels ou nommés et pour ceux
nommés uniquement :
 Il faut placer les paramètres ayant des valeurs par
défaut après ceux qui n'ont pas de valeurs par défaut.
def fct(pk1, pk2="default", *var_p, k_only1, k_only2="default", **var_k)
… # corps de la fonction

def fct(p_k1, p_k2, p_k3):


pass
fct(23, p_k2=55, 78) # Erreur
fct(23, p_k2=55, p_k3=78) # OK
7
Paramètres d’une fonction

 Exemples :
def fct(p_k1, p_k2, *args):
pass
fct(p_k1=5, p_k2=10, 3, 4, 5, 6) # Erreur
fct(5, 10, 3, 4, 5, 6) # Ok

8
Fonctions

def afficher(jour, *numeros, ciel="bleu", **gagnants):


print("positionel ou nommé : ", jour)
print("var positionel : ", numeros)
print(“nommé uniquement : ", ciel)
print("var-nommé : ", gagnants)

afficher("Lundi", 1, 3, 32, 7, ciel="gris", Asma=344, Ahmed=475)


# L’affichage est alors:
positionel ou nommé : Lundi
var positionel : (1, 3, 32, 7)
nommé uniquement : gris
var-nommé : {'Asma': 344, 'Ahmed': 475}

9
Les fonctions lambda

 Python propose un autre moyen de créer des fonctions


courtes limitées à une seule instruction : les fonctions
lambda
 Elles sont utilisées dans certains contextes, pour
lesquels définir une fonction avec def serait plus long et
moins pratique.
lambda par1, par2, …: instruction de retour
 Exemples :

lambda x : x*x
lambda x : 10 if x >0 else -10

10
Les fonctions lambda

f=lambda x : 10 if x >0 else -10


a = f(5) # a vaut 10

b = (lambda x,y : sum([v for v in range(x,y)]))(2,6) # b vaut 14

11
Gestion des fichiers

 Pour ouvrir un fichier on utilise la fonction :


open(nomFichier, mode)
 mode est une chaîne optionnelle qui spécifie le mode
(par défaut, mode = 'r') :
'r' Lecture (read). Pointeur placé en début de fichier
'w' Ecriture (write). Ancien contenu perdu. Fichier créé s’il n’existe pas.
'a' Ajout à la fin (append). Pointeur placé en fin de fichier. Fichier créé
s’il n’existe pas.
'r+' Lecture et écriture. Pointeur placé en début de fichier
'w+' Lecture et écriture (write). Ancien contenu perdu. Fichier créé s’il
n’existe pas.
'a+' Ajout et lecture. Pointeur placé en fin de fichier. Fichier créé s’il
n’existe pas. 12
Ouverture et fermeture d’un fichier

 open( ) renvoie un objet utilisé pour manipuler le fichier.

f = open('topics.txt') # équivalent à f = open('topics.txt', 'r')


f = open('topics.txt', 'w') # ouvrir le fichier en écriture

 La fonction open( ) lance une erreur d’exécution de


type FileNotFoundError quand le fichier spécifié n’est
pas trouvé.
 Il est possible de capturer cette erreur dans un bloc
try…except (voir chapitre suivant)

13
Ouverture et fermeture d’un fichier

 Après utilisation (lecture/écriture) il faut fermer le fichier


avec f.close()
 L’instruction with garantit la fermeture du fichier
automatiquement après son utilisation.
with open("data.txt", "r") as fichier :
print (fichier.read())

14
Gestion des fichiers

 Méthodes en mode lecture :


 f.read() : renvoie une chaîne avec le contenu du fichier
 f.readline() : chaque appel renvoie une ligne du fichier
 f.readlines() : renvoie une liste avec les lignes du fichier
 Les « lignes » ont toujours '\n' à la fin
 Exemple : Itérer sur les lignes d'un fichier
f = open('data.txt')
for ligne in f :
print(ligne, end='')
f.close()

15
Gestion des fichiers

 Méthodes en mode écriture ('w'/'a') :


 f.write(s) : écrit la chaîne s dans le fichier et renvoie le nombre
de caractères écrits.

 f.writelines(liste) où liste est une liste de chaînes : écrit les


chaînes dans le fichier (le '\n' n'est pas ajouté automatiquement)

 En modalité 'w', ces méthodes écrasent le contenu du


fichier !
 f.seek(position) change la position de lecture/écriture
dans le fichier.

16
Chemins de fichier

 Il existe plusieurs méthodes pour manipuler le chemin


(path) d’un fichier
 Exemples :
import os
p = "D:\\Nahla\\Travail\\Python\\tests\\voit.py"
s= os.path.dirname(p) # s vaut 'D:\\Nahla\\Travail\\Python\\tests'
s= os.path.basename(p) # s vaut 'voit.py‘
p= 'D:\\Nahla'
s= os.path.join(p, "func.py") # s vaut 'D:\\Nahla\\func.py'
tup= os.path.split(p) # tup vaut
#('D:\\Nahla\\Travail\\Python\\tests', 'voit.py')
s= os.path.abspath(".")
17
PROGRAMMATION OBJET

18
Classe et objet

 Une classe est la description d'une famille d'objets qui


ont la même structure et les mêmes comportements.
Une classe est une sorte de moule à partir duquel sont
générés les objets.
 Une classe est constituée :
 d'un ensemble de variables (attributs) qui décrivent la
structure des objets ;
 d'un ensemble de fonctions (méthodes) qui sont applicables
aux objets, et qui décrivent leur comportement.

19
Objet

 L‘état d'un objet :


 regroupe les valeurs instantanées de tous ses attributs
 évolue au cours du temps
 est la conséquence de ses comportements passés
 Une classe est une abstraction, elle définit une infinité
d'objets. Un objet est caractérisé par un état, des
comportements et une identité
 En Python, les attributs d’un objet d’une classe sont par
défaut dynamiques.
 On peut initializer une partie (ou tous) les attributes
dans la méthode __init__() de la definition de la
classe 20
 Exemple :
# Définition d'une classe
class Voiture :
def __init__ ( self , marque="aucune" , couleur="aucune" , reserves=0):
self.marque = marque
self.couleur = couleur
self.reserveEssence = resreves
# Objet
ma_voiture = Voiture()
#Etat
ma_voiture.marque = "punto"
ma_voiture.couleur = "grise"
ma_voiture.reserveEssence = 30
21
 Le comportement d’un objet regroupe toutes ses
compétences, il décrit les actions et les réactions d'un
objet. Il se représente sous la forme de méthodes
 Exemple :
class Voiture : ma_voiture = Voiture()
def __init__ ( … ) : # Comportement
… ma_voiture.demarrer()
def demarrer (self) : ma_voiture.arreter()
print("je démarre")
def arreter(self) :
print("Je m'arrête")

22

Vous aimerez peut-être aussi