Les fonctions⚓︎
Définitions et premiers exemples⚓︎
fonction
Une fonction est un sous-programme qui rajoute une fonctionnalité à python. Elle comporte :
- le nom d'appel de la fonction : qui ordonne à l'interpréteur d'exécuter la fonction
- des paramètres d'entrée (des noms de variables) à prendre en compte ou à modifier
- le corps de la fonction est l'ensemble des instructions du sous-programme
- un renvoi de valeurs en sortie.
Important
Cliquez sur les + et prenez le temps de lire les commentaires !
def nom_de_fontion(paramètres séparés par une vigule) : # (1)!
"""
les instructions à exécuter
le cors de la fonction est indenté
à l'aide de la touche ++tab++
""" # (2)!
return resultat(s) # (3)!
-
les deux points obligatoires.
-
même indentation pour toutes les lignes.
-
facultative mais recommandée.
L'instruction nom_de_fontion()
avec les valeurs des paramètres d'entrée est un appel de fonction.
Un premier exemple
Exécuter le script ci-dessous. Rien ne se passe, c'est normal.
L'interpréteur a juste pris en compte la définition de la fonction fois_sept()
de paramètre n
.
Pour faire appel à la fonction on peut :
- Dans la console : saisir et valider l'appel de la fonction avec l'argument \(2\) :
script console
>>> fois_sept(5)
- Dans le script : créer une variable nommée
nbr
à laquelle vous affecterez la valeur renvoyée par la fonctionfois_sept()
avec l'argument \(5\). Exécuter et valider votre script.
paramètre et argument
Dans l'exemple précédent, la fonction fois_sept()
a pour paramètre la variable n
.
Dans l'appel fois_sept(5)
, \(5\) est l'argument de la fonction. Il renvoie la valeur \(35\).
fonction sans résultat renvoyé
La fonction carre()
ci-dessous :
- prend pour paramètre
n
, - affiche le carré de
n
-
ne renvoie rien.
-
Exécuter le script suivant.
- Vérifier à l'aide d'une instruction
print()
que la variablea
contientNone
(rien).
# Tests
(insensible à la casse)(Ctrl+I)
(Alt+: ; Ctrl pour inverser les colonnes)
(Esc)
Warning
Une fonction qui renvoie rien en sortie s'appelle une procédure.
Le langage Python ne fait pas de différence dans la syntaxe entre fonction et procédure.
Il vaut par la suite rajouter une instruction return
pour bien visualiser la fin de la fonction.
Les résultats créés par la fonction et non renvoyé par une commande return
sont effacés de la mémoire.
gérer l'indentation
La fonction somme()
doit :
- prendre pour paramètres
x
ety
, -
renvoyer le résultat de
2x-3y
. -
Exécuter le script. Une erreur
IndentationError
est signalée. - Selectionner les lignes 2 et 3, puis appuyer sur la touche Tab pour corriger l'indentation, et relancer le script.
- Saisir dans la console
>>>somme(3,4)
. Une erreurTypeError
est signalée. - Rajouter l'argument
y
dans la fonctionsomme()
. Relancer et valider le script. - Créer une variable
a
et lui affecter la valeur renvoyée parsomme(0,2)
- Créer une variable
b
et lui affecter la valeur renvoyée parsomme(2,0)
- Que renvoie la comparaison
a != b
?
# Tests
(insensible à la casse)(Ctrl+I)
(Alt+: ; Ctrl pour inverser les colonnes)
(Esc)
Coeur
Pour une fonction avec plusieurs paramètres, l'ordre dans lequel les arguments sont donnés est important.
QCM⚓︎
Je vérifie ma compréhension (bouton en bas pour recommencer)
-
Soit la fonction suivante :
1 2 3
def mafonction( a ) : b = a**2 + 3 * a + 2 return b
L'appel
mafonction(1)
renvoie :-
6
-
7
-
None
-
rien
-
-
Soit la fonction suivante :
1 2 3
def mafonction ( a ) : b = a**2 - 3 * a + 2 print( b )
L'appel
mafonction(2)
renvoie :-
0
-
0.0
-
None
-
rien
-
-
Soit la fonction suivante :
1 2 3
def mafonction(b , a) : return 2 * a + b c = mafonctionC(2**3 ,2+3 )
La variable
c
a pour valeur :-
16
-
17
-
18
-
21
-
-
Soit la fonction suivante :
1 2
def f(a , b ,x) : return a*x+b
L'appel
f(2,3,4)
renvoie :-
10
-
11
-
14
-
0
-
-
Soit la fonction suivante :
1 2
def f(a , b ,x) : return a*x+b
La comparaison
f(2,1,3)==7
renvoie :-
True
-
``#!python False
-
-
Soit le script suivant :
1 2 3 4 5
def hi (a, b): return a * b def hello (a, b): return a + b
L'appel
hi(2, 2) + hello(3, 3)
renvoie la valeur :-
8
-
8
-
10
-
11
-
-
Soit le script suivant :
1 2 3 4 5 6 7
def hi (a, b): return a * b def hello (a, b): return a + b a = hi( 1, 2)
L'appel
hello(a, 1)
renvoie la valeur :-
1
-
2
-
3
-
4
-
-
Soit le script suivant :
1 2 3 4 5
def hi (a, b): return a * b def hello (a, b): return a + b
L'appel
hello(hi(3, 2), 4)
renvoie la valeur :-
10
-
11
-
20
-
24
-
-
Soit le script suivant :
1 2 3 4 5
def hi (a, b): return a * b def hello (a, b): return hi(a, b + 1)
L'appel
hello(2, 2)
renvoie la valeur :-
4
-
5
-
6
-
8
-
Exercices⚓︎
Exercice 1
Compléter le script ci-dessous de la fonction d'appel affine()
:
- de paramètre
x
- qui renvoie
3*x-1
Valider votre réponse (Ctrl+Enter) et lire la solution.
# Tests
(insensible à la casse)(Ctrl+I)
(Alt+: ; Ctrl pour inverser les colonnes)
(Esc)
Exercice 2
Compléter le script ci-dessous de la fonction d'appel mystere()
:
- de paramètres
x
ety
- calcule
u = x + y
- calcule
v = 3*x
- renvoie
u-v
Valider votre réponse (Ctrl+Enter) et lire la solution.
# Tests
(insensible à la casse)(Ctrl+I)
(Alt+: ; Ctrl pour inverser les colonnes)
(Esc)
Exercice 3
Écrire le script d'une fonction d'appel mafonction()
:
- prend pour paramètre
x
- renvoie la somme de son carré et de \(5\)
# Tests
(insensible à la casse)(Ctrl+I)
(Alt+: ; Ctrl pour inverser les colonnes)
(Esc)
# Tests
(insensible à la casse)(Ctrl+I)
(Alt+: ; Ctrl pour inverser les colonnes)
(Esc)