Python > Le langage > Définition de fonctions
Définir vos propres fonctions
- Pour clarifier un programme, on peut souhaiter déléguer
certains détails à des fonctions.
- Les fonctions sont également très utiles pour factoriser
le code. Dès qu'un même code est écrit plus d'une fois, une fonction
pourrait le remplacer.
- Pour définir une fonction, vous devez en premier lieu identifier :
- ses entrées (paramètres ou arguments),
- ses sorties (valeur de retour mais aussi comportement
et effets de bord).
- Comme pour les structures de contrôle, le corps de la fonction
est délimité par l'indentation.
- Attention : le code d'une fonction est exécuté quand
la fonction est appelé, pas quand elle est
déclaré !
Appel de fonction
- Une fonction est un sous-programme chargé de réaliser une tâche.
- Une fonction est définie par :
- un nom,
- une liste de paramètres (qui peut être vide),
- une valeur de retour,
- un comportement.
- Attention : certaines fonctions peuvent avoir des effets de bord.
Syntaxe
- Le mot-clé def introduit la déclaration d’une fonction :
def nom_de_la_fonction(arg1, arg2, ...) :
...
return expression_a_retourner
- Les arguments d'une fonction sont accessibles dans le corps de la fonction,
au même titre que des variables.
- Il est possible de rendre certains arguments optionnels en définissant
des valeurs par défaut :
def nom_de_la_fonction(arg1, arg2 = 'valeur', ...) :
...
Exemple
def mult2(x):
return x*2
mult2(10) # Vaut 20
mult2(10 + 5) # Vaut 30
mult2(10) + 5 # Vaut 25
n = mult2(10) # La variable n contient 20
La fonction est évaluée seulement lorsqu’elle est appelée. Sa valeur
dépend des arguments qui lui sont passés.
Décorateurs
Le principe des decorators est d'effectuer un pré-traitement au moment
de l'appel d'une fonction.
def pretraitement(fonction):
fonction.__doc__ = 'f décorée :' + fonction.__doc__
return fonction
def traitement():
""" ma fonction """
print 'traitement'
traitement = pretraitement(traitement)
print traitement.__doc__ # Affiche 'f décorée : ma fonction'
Le langage Python offre une syntaxe concise pour appliquer un décorateur.
@pretraitement
def traitement():
""" ma fonction """
print 'traitement'
print traitement.__doc__ # Affiche 'f décorée : ma fonction'