0% ont trouvé ce document utile (0 vote)
87 vues30 pages

Module 3 Python

Ce document décrit l'utilisation des fonctions en Python, notamment leur déclaration, leur appel et le passage de paramètres. Il présente des exemples de fonctions comme diviseur, pair, premier.

Transféré par

hamdi jihen
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
87 vues30 pages

Module 3 Python

Ce document décrit l'utilisation des fonctions en Python, notamment leur déclaration, leur appel et le passage de paramètres. Il présente des exemples de fonctions comme diviseur, pair, premier.

Transféré par

hamdi jihen
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

Mondher Bouden

Maître assistant

Semestre 3
2016
Module3

2
Les fonctions : déclaration et utilisation
• Objectif

– Utiliser la décomposition fonctionnelle comme voie


de simplification d'un problème et de structuration
d'une solution.

– Pouvoir déclarer et utiliser des fonctions en Python

– Maîtriser le passage de valeurs en paramètres


La décomposition fonctionnelle
• Objectif : imaginer une solution en termes de boîtes noires que
l’on décrira ultérieurement → façon de concevoir des solutions
progressivement
• Par exemple : on doit déterminer si des nombres sont premiers
• 𝑛 est premier s'il n'a comme diviseurs que 1 et lui-même, 𝑛
• Sans plus d'information, on utilise une fonction premier(n), en
supposant que la valeur retournée par celle-ci sera une valeur
booléenne :

if premier (4):
...
else :
...
Une boîte noire ?
• On voit une fonction comme une boîte noire.
La fonction premier(arg)
• On voit une fonction comme une boîte noire.
La décomposition fonctionnelle
• 𝑛 est premier s'il n'a comme diviseurs que 1 et lui-même
• 𝑛 n'est pas premier s'il a d'autres diviseurs, compris entre 2 et 𝑛 − 1
• Si n % i == 0, alors 𝑛 se divise exactement par 𝑖.
• On veut faire abstraction de ce détail dans notre code, tout en le
rendant plus facile à lire. On va donc créer une fonction diviseur(a,
b) retournant un Booléen, tel que:
▶ diviseur(a, b) == True si a % b == 0
▶ diviseur(a, b) == False autrement
• On peut utiliser diviseur(a, b) dans notre code de la fonction
premier(n), sans élaborer diviseur(a, b)
• Les noms de variables dans la définition d'une fonction sont
appelés paramètres.
La fonction diviseur(arg, arg)
• diviseur(a, b) retourne True si b est un diviseur de a
• La position des valeurs à l'appel de la fonction est importante
▶ diviseur(12, 4) n'est pas la même chose que diviseur(4, 12)
La fonction premier(n)
• 𝑛 est premier s'il n'a comme diviseurs que 1 et lui-même
• 𝑛 n'est pas premier s'il a d'autres diviseurs, compris entre 2 et 𝑛 − 1
• La fonction diviseur(a, b) retourne True si b est un diviseur de a, et
False sinon.
La fonction premier(n)
• 𝑛 est premier s'il n'a comme diviseurs que 1 et lui-même
• 𝑛 n'est pas premier s'il a d'autres diviseurs, compris entre 2 et 𝑛 − 1
• La fonction diviseur(a, b) retourne True si b est un diviseur de a, et
False sinon.
La fonction premier(n)
• Lorsqu'un vérifie le contenu d'une variable Booléenne dans une
expression conditionnelle, on peut omettre le == True
Déclaration d'une fonction en Python
• Lorsqu'un vérifie le contenu d'une variable Booléenne dans une
expression conditionnelle, on peut omettre le == True
Utilisation d'une fonction en Python
• Lorsqu‘on vérifie le contenu d'une variable Booléenne dans une
expression conditionnelle, on peut omettre le == True
La fonction diviseur(a, b)
• b est un diviseur de a si le reste de la division de a par b est 0
• Si a % b == 0, alors b est un diviseur de a
• La fonction diviseur(a, b) retourne True si b est un diviseur de a, et
False autrement.
La fonction diviseur(a, b)
• b est un diviseur de a si le reste de la division de a par b est 0
• Si a % b == 0, alors b est un diviseur de a
• La fonction diviseur(a, b) retourne True si b est un diviseur de a, et
False autrement.
La fonction diviseur(a, b)
• b est un diviseur de a si le reste de la division de a par b est 0
• Si a % b == 0, alors b est un diviseur de a
• La fonction diviseur(a, b) retourne True si b est un diviseur de a, et
False autrement.
La fonction diviseur(a, b)
• b est un diviseur de a si le reste de la division de a par b est 0
• Si a % b == 0, alors b est un diviseur de a
• La fonction diviseur(a, b) retourne True si b est un diviseur de a, et
False autrement.
La fonction pair(n)
• Indique si n est un nombre pair, retourne un Booléen
• Si n % 2 == 0, alors n est pair
• Réutilisons notre fonction diviseur(a, b) !
La fonction pair(n)
• Indique si n est un nombre pair, retourne un Booléen
• Si n % 2 == 0, alors n est pair
• Réutilisons notre fonction diviseur(a, b) !

Version équivalente :
La fonction impair(n)
• Indique si n est un nombre impair, retourne un Booléen
• Réutilisons notre fonction pair(n) !
Le passage de valeurs par paramètres
• diviseur(12, 4)
• diviseur(3 * 4, 2**2)
• diviseur(abs(-12), 3 + 1)
• Appel : nom_de_fonction(expr1, expr2 ,...)
• Les expressions sont d'abord évaluées, puis les valeurs
sont passés en arguments à la fonction.
Le passage de valeurs par paramètres
• Lors de l'appel de diviseur(12, 4), les valeurs 12 et 4 sont
les arguments avec lesquels on appelle la fonction. Les
paramètres a et b prendront les valeurs des arguments
pendant l'exécution du code de la fonction.
Fonction exposant(a, b) ?
La décomposition fonctionnelle, lorsque...
• La fonction n’a pas d’équivalent existant (opérateur ou
fonction existante)… voir les nombreuses librairies.
• La fonction sera réutilisée (premier()).
• La fonction améliorera la lisibilité du code (diviseur()).
• La fonction permet de continuer la conception de la solution
en reportant à plus tard la conception de parties du
programme.
• La fonction est simple (tient sur un écran normalement).
• L’expérience vous dira jusqu’à quel niveau il faut
décomposer une solution en fonctions.
Compromis : lisibilité, cohérence, efficacité
Le retour de plus d'une valeur
• Il peut parfois être pratique de définir une fonction qui
retourne plusieurs valeurs.
• Fonction carre_et_cube(x), qui retourne x**2 et x**3
• Façon d'utiliser la fonction : a, b = carre_et_cube(4)
• Utiliser ensuite les variables a et b dans des expressions.
Le retour de plus d'une valeur
Attention au passage d'arguments
• Le passage d'une valeur en argument à une fonction copie
la donnée reçu dans la variable locale (le paramètre) de la
fonction.

• Par exemple, lors de l'appel carre_et_cube(3 * 2 - 1), la


valeur 5 est copiée dans la variable x de la fonction.
Attention au passage d'arguments
• Certaines données sont trop volumineuses pour procéder
ainsi, par exemple : les listes.

• Alors, elle ne seront pas copiées, et la fonction travaillera


sur l'espace mémoire original.

• Si on modifie la liste dans la fonction, la liste originale


sera également modifiée.
Attention aux définitions récursives

Vous aimerez peut-être aussi