Programmation Impérative Fonctions Python

publicité
Programmation Impérative 6 : Plan
Retour qtido
Programmation Impérative
Fonctions Python
Fonctions en Python
Pile d'Appels de Fonctions
Paramètres par Défauts
Fonctions et Programmes
Fonctions Comme Outils d'Abstraction
6 / 29 − Rémi Emonet − Programmation Impérative Fonctions Python
Programmation Impérative 6 : Plan
Programmation Impérative 6 : Plan
Retour qtido
Retour qtido
Fonctions en Python
Fonctions en Python
Pile d'Appels de Fonctions
Pile d'Appels de Fonctions
Paramètres par Défauts
Paramètres par Défauts
Fonctions et Programmes
Fonctions et Programmes
Fonctions Comme Outils d'Abstraction
Fonctions Comme Outils d'Abstraction
15 / 29 − Rémi Emonet − Programmation Impérative Fonctions Python
19 / 29 − Rémi Emonet − Programmation Impérative Fonctions Python
Fonctions en Python
Utilisation de Fonctions en Python
Les bibliothèques fournissent des fonctions
Il est possible d'écrire ses propres fonctions
ne pas réinventer la roue (pas plus d'une fois)
éviter de se répéter
éviter le copier/coller
Qu'est ce qu'une fonction
un nom
une liste de noms de paramètres
un corps (suite d'instructions)
possiblement une valeur retournée
Exemples
1
2
3
4
5
6
7
8
import math
from qtido import *
print(math.log10(1000))
d = math.sqrt(16+9)
print(d)
f = creer(800, 600)
rectangle(f, 10, 10, 510, 510)
Quelles fonctions sont utilisées ci dessus ?
qtido.creer, qtido.rectangle, math.log10, math.sqrt, print
Un appel de fonction a une valeur
math.log10(100) vaut 3.0 (que l'on passe à print )
creer(800,600) vaut une valeur représentant la fenêtre créée
print(d) vaut None
None est une valeur spéciale en Python, indiquant l'absence
de valeur
20 / 29 − Rémi Emonet − Programmation Impérative Fonctions Python
21 / 29 − Rémi Emonet − Programmation Impérative Fonctions Python
Définition de Fonctions en Python
1
2
3
4
5
6
7
8
9
10
11
import math
# les fonctions courtes peuvent être sur une ligne
def puissance(a, b): return a**b
def info(message): print("INFO :", message)
def distance_origine(x, y):
"renvoie la distance du point (x,y) à l'origine)"
d = x*x + y*y
return math.sqrt(d)
Suivant le modèle
1 def «nom» ( «liste-param» ):
2
"documentation de la fonction,
3
«instr» # dans le corps de la
4
«instr» # dans le corps de la
5
…
# dans le corps de la
optionnelle"
fonction
fonction
fonction
def , ( , ) , : et l'indentation sont obligatoires
dans «liste-param», les noms sont séparés par des ,
1
2
3
4
5
6
7
8
9
10
11
Appel de Fonction et Valeur de Retour
1 def puissance(a, b):
2
print("notons que a vaut", a)
3
return a**b
4
5 v = puissance(2*21, 4)
6 v2 = puissance(12, 2)
À chaque fois qu'une fonction est appelée
(ex, puissance(2*21, 4) )
les valeurs de paramètres sont calculées (ex, 42 et 4)
... et affectées à des variables (ex, a=42 et b=4)
le corps de la fonction est exécuté (le print, puis le return)
... jusque la fin ou jusque return
la valeur de l'appel est la valeur retournée
(ex, puissance(2*21, 4) vaut 3111696 )
return renvoie la valeur et interrompt la fonction
si la fin arrive sans return , la fonction renvoie None
NB : chaque fonction a ses propres variables dites « locales »
22 / 29 − Rémi Emonet − Programmation Impérative Fonctions Python
23 / 29 − Rémi Emonet − Programmation Impérative Fonctions Python
Portée et Visibilité des Variables
Programmation Impérative 6 : Plan
a =
b =
c =
def
1
2
3
fun(b, d):
print(a) #
c = 10
#
print(c) #
e = 3.14 #
fun(1, 1)
print(c)
Retour qtido
# b cache le b global
lecture seulement -> lit le a global
affectation -> nouvelle, qui cache le c global
10
variable locale
# 1 10
# 3
Variable globale
Fonctions en Python
Pile d'Appels de Fonctions
Paramètres par Défauts
Fonctions et Programmes
Fonctions Comme Outils d'Abstraction
définie (affectées) dans la partie principale du programme
(sans indentation, ou dans un if, for, while)
visible de partout dans le programme
Variable locale
définie dans une fonction (ou en paramètres d'une fonction)
visible uniquement dans la fonction, changée à chaque appel
cache possible une variable globale du même nom
Ne pas utiliser trop de variables globales !
24 / 29 − Rémi Emonet − Programmation Impérative Fonctions Python
27 / 29 − Rémi Emonet − Programmation Impérative Fonctions Python
Pile d'Appels de Fonctions
Qu'affiche ce programme ?
1
2
3
4
5
6
7
8
9
10
11
x=42
def mystere(x, p):
if x <= 1:
res = 1
else:
res = x * mystere(x-1, p+1)
print(p*" ", res)
return res
Points Clés
Définition de fonction en python
Pile d'appels
chaque appel de fonction a ses propres variables
copie des valeurs passées en argument
stockage dans une pile en cas d'appels récursifs
x = mystere(4, 0)
print(x)
Pile d'appels
chaque appel de fonction a ses propres variables
copie des valeurs passées en argument
stockage dans une pile en cas d'appels récursifs
28 / 29 − Rémi Emonet − Programmation Impérative Fonctions Python
29 / 29 − Rémi Emonet − Programmation Impérative Fonctions Python
Téléchargement