Définir et utiliser une fonction
- Fiche de cours
- Quiz
- Profs en ligne
- Videos
- Application mobile
- Comprendre la notion de fonction
- Savoir définir et appeler une fonction.
- Une fonction associe une séquence d’actions à un nom. Elle peut avoir ou ne pas avoir des paramètres.
- Les variables ont des portées différentes, c’est-à-dire qu’une variable est ou n’est pas accessible suivant la manière dont on la définit.
- La variable est appelée un argument de la fonction.
- Pour changer la valeur d’une variable dans une fonction, on pourra procéder par un passage d’argument soit par valeur, soit par référence.
- Structures conditionnelles
- Notions d’affectations
En informatique, on préfère utiliser le terme « appliquer une fonction » plutôt que « utiliser la fonction ». On parle donc d’appel de fonctions.
Une fonction peut avoir des paramètres ou ne pas en avoir.
def affiche():
print("test affichage")
Pour appliquer une fonction sans paramètre, il suffit de taper def dans la console (aussi appelée shell), suivi du nom de la fonction, suivi de () et d’appuyer sur entrée.
Une fonction peut utiliser dans son corps des variables pour réaliser des actions.
On parle de scoping en anglais pour parler de la portée d’une variable.
La variable peut être à portée locale ou à portée globale. On dit qu’il s’agit d’une variable locale ou globale.
- Une variable locale ne peut être
utilisée que dans la fonction ou dans le bloc
où elle est définie.
Exemple
Si une fonction utilise dans son corps des variables pour effectuer des calculs intermédiaires, la variable est alors qualifiée de locale. Sa valeur n’est valable qu’à l’intérieur du corps de la fonction. - À l’opposé d’une variable
locale, une variable globale peut
être utilisée dans tout le programme.
Les valeurs définies en dehors d’une
fonction sont qualifiées de globales.
Exemple d’exécution en Python
L’appui sur « Next » indique les actions effectuées par Python.
La valeur de b vaut 100 à l’intérieur de la fonction (b est une variable locale), mais en dehors de la fonction, la valeur de b vaut 45 (b est une variable globale).
Si on veut que la fonction change la valeur d’une variable qui se trouve dans son corps, il faut utiliser le mot clé global. Cette variable est alors globale, les modifications de cette variable à l’intérieur du corps de la fonction sont donc aussi valables en dehors du corps de celle-ci. On parle de passage d’arguments par valeur.
L’appui sur « Next » indique les actions effectuées par Python ainsi que les valeurs successives prises par les variables a et b.
Le fait d’avoir rajouté global b dans le corps de la fonction permet de rendre accessible la variable b, sa valeur est ainsi changée et vaut donc 1.
La fonction peut également changer la valeur d’une variable par des listes, car les éléments d’une liste sont référencés par Python par leur adresse mémoire. On parle de passage d’arguments par référence, c’est-à-dire qu’on effectue ce changement en utilisant les adresses mémoire.
L’appui sur « Next » indique les actions effectuées par Python.
b est défini comme une liste d’une valeur (100), elle est donc référencée par une adresse mémoire.
Lorsque la fonction s’applique, elle affecte à l’adresse mémoire b[0] la valeur 1, donc elle change la valeur de b : la valeur 100 est écrasée par la valeur 1.
Le paramètre est qualifié de formel car on ne connait pas encore sa valeur.
Ce paramètre ne sera connu qu’à l’appel de la fonction, le paramètre sera alors qualifié d’effectif.
def affiche(nombre):
print("test affichage")
L’appui sur « Next » indique les actions effectuées par Python.
Le paramètre formel « nombre » ne prend une valeur effective qu’à partir de la ligne 7.
Voici ci-dessous le détail des affectations pour l’appel de fonction1(3).
i | 0 | 1 | 2 | 3 |
A-t-on i < 3 ? | Oui | Oui | Oui | Non |
Affichage | 0 | 1 | 2 | |
Valeur de i | 1 | 2 | 3 |
- On peut utiliser plusieurs arguments.
Par exemple, la fonction somme utilise deux arguments.
def somme(x,y):
return x+y - Il existe une manière plus rapide de définir une fonction, on appelle cela une « fonction lambda ». Par exemple, « g = lambda x: x*2 » est équivalent à « def g(x): x=x*2 ».
Si on veut être rigoureux, il faut faire la distinction entre une fonction et une procédure.
L’appui sur « Next » indique les actions effectuées par Python.
fct(3) va générer une « impression écran » (avec la commande print en ligne 2), c’est donc juste un objet qui est affiché mais qui n’a pas de type et qui ne peut pas être réutilisé.
En transformant fct en une « vraie » fonction (avec la commande return en ligne 2), on obtient le résultat attendu.
L’appui sur « Next » indique les actions effectuées par Python.
Vous avez obtenu75%de bonnes réponses !