def f(x):
return 2*x
f
est le nom de la fonctionx
est l'argument (ou entrée) def
2*x
est la valeur de retour (ou sortie) def
Mathématiquement, f
correspond à la fonction mathématiques $f : x \longmapsto 2x$.
On utilise une fonction en écrivant son nom suivi d'une valeur pour ses arguments (on dit qu'on appelle f
) :
f(3) # calcule la valeur de retour de f avec x remplacé par 3
La variable x
dans f
est locale : elle n'existe que dans f
et ne peut pas être utilisée/modifiée en dehors. Par exemple :
def f(x):
return x
print(x) # x n'existe qu'à l'intérieur de f, il ne faut pas essayer de l'utiliser en dehors
La variable x
dans f
est muette : de la même façon que la fonction mathématiques $f : x \longmapsto 2x$ est équivalente à $f : y \longmapsto 2y$, la fonction f
ci-dessous est parfaitement équivalente à :
def f(y):
return 2*y
Exercice
- Définir la fonction $g : z \longmapsto \sqrt z(z^2-1)$ en Python.
- Vérifier que $g(4) = 30$.
- En réutilisant
g
, définir $h : z \longmapsto 3z + \sqrt z(z^2-1)$ en Python. Vérifier que $h(4) = 42$.
Solution
# 1.
def g(z):
return (z**2 - 1)*z**0.5
# 2.
print(g(4))
# 3.
def h(x):
return 3*x + g(x)
h(4)
Exercice
- Définir la fonction $inv : x \longmapsto \frac{1}{x}$ en Python.
- En réutilisant
inv
, définir $f : x \longmapsto \frac{1}{1+x^2}$ en Python. Vérifier que $f(2) = 0.2$.
Solution
# 1.
def inv(x):
return 1/x
# 2.
def f(x):
return inv(1 + x**2)
f(2)
Pourquoi écrire des fonctions?¶
Les fonctions offrent au moins 2 intérêts majeurs :
- Elles permettent de réutiliser du code : appeller une fonction plutôt que réécrire plein de fois la même portion de code. En évitant de répéter un long bloc de code, on économise des lignes de code et on gagne en lisibilité.
- Elles permettent de mieux comprendre le code, en donnant un nom significatif à la fonction.
Fonctions de plusieurs variables¶
Pour l'instant, on a utilisé fonctions ayant un seul argument. De façon générale, une fonction (en Python ou en mathématiques) peut avoir n'importe quel nombre d'arguments. Par exemple :
def somme(x, y): # cette fonction effectue la somme de deux nombres
return x + y
On utilise la fonction somme
en donnant deux valeurs pour x
et y
(dans l'ordre), séparées par une virgule :
somme(3, 4) # appelle somme en remplaçant x par 3 et y par 4
On peut bien sûr utiliser plus de variables :
def somme3(x, y, z):
return x + y + z
somme3(1, 2, 3)
Exercice
Définir une fonction delta
telle que delta(a, b, c)
renvoie le discriminant de l'équation $ax^2 + bx + c = 0$. Vérifier que le discriminant de $x^2 + 2x + 3$ est $-8$.
Solution
def delta(a, b, c):
return b**2 - 4*a*c
delta(1, 2, 3)
Fonctions prédéfinies¶
Un module en Python est un ensemble de fonctions regroupées autour d'un même thème. Un des avantages de Python est son nombre de modules disponibles. Par exemple, NumPy contient de nombreuses fonctions mathématiques :
import numpy as np # importe le module NumPy, toutes les fonctions devant être préfixées par np. pour être utilisée
np.exp(1) # fonction exponentielle de NumPy
np.log(1) # logarithme naturel (néperien) de NumPy
Définir la fonction sigmoïde $s : x \longmapsto \frac{1}{1+e^{-x}}$. En calculant $s(x)$ pour de grandes valeurs de $x$, conjecturer son comportement en $+\infty$.
def s(x):
return 1/(1 + np.exp(-x))
s(10) # s a l'air de tendre vers 1 en l'infini
Si on veut gagner du temps ou si on ne se souvient pas du nom de la fonction que l'on souhaite utiliser, on peut utiliser la touche Tab pour compléter automatiquement ce qu'on est en train d'écrire. On peut ensuite sélectionner la bonne fonction avec la touche Entrée :
Il est possible d'obtenir de l'aide sur une fonction en cliquant dessus puis en appuyant sur les touches Shift+Tab (laisser appuyer sur Shift, puis appuyer sur Tab) :