Fonctions - Généralités
I. Les fonctions en Python⚓︎
Notion de fonction⚓︎
Les fonctions
En informatique, les fonctions servent à mieux structurer votre code. On dit aussi que les fonctions servent à factoriser le code. Elles permettent d'éviter de répéter plusieurs fois des portions de codes identiques. Ainsi, une fonction peut être vue comme un «petit» programme :
- à qui on donne des paramètres en entrée,
- puis qui effectue alors un traitement sur ces paramètres, dans le corps de la fonction.
- qui renvoie enfin un résultat en sortie.

Une fonction qui modifie des variables mais sans renvoyer de résultat est appellée une procédure. Le langage Python ne fait pas de différence dans la syntaxe entre fonction et procédure.
Syntaxe en Python⚓︎
En Python, une fonction peut s'écrire en suivant toujours le même formalisme :
Syntaxe
- Le mot clé
def+ nom de la fonction + les paramètres entre parenthèses (pour chacun un nom de variable). + Terminer par deux points: - Si la fonction ne prend aucun paramètres, on met quand même les parenthèses sans rien à l'intérieur.
- En dessous, écrire le blocs des instructions. Attention il faut indenter (décaler) ce bloc.
- Si la fonction renvoie un résultat, finir en dernière ligne par le mot clé
returnsuivi de ce que renvoie la fonction. Attention, cette ligne est indentée également et marque la fin de la fonction.
Visuellement cela donne quelque chose comme ceci:
return
Dès que l'instruction return est exécutée, on "sort" de la fonction.
Un return dans une boucle provoque donc une sortie anticipée de la boucle.
🌵 Il ne faut pas l'oublier ...
Appeler (utiliser) une fonction En Python⚓︎
Appel de fonction
Lorsque l'on définit une fonction, on ajoute une fonctionalité à python, mais la fonction n'est pas exécutée. Elle ne le sera que lorsque l'on va appeler cette fonction.
Une fonction est utilisée comme une instruction quelconque. Un appel de fonction est constitué du nom de la fonction suivi entre parenthèses des valeurs des paramètres d'entrée. Cet appel peut être fait :
- Soit, comme nous l'avons vu, dans le programme principal (ou dans une autre fonction)
def double(nombre) :
return 2*nombre
a = 5
reponse = double(a) # La fonction est appelée ici
print("le double de ", a,"vaut :", reponse)
- Soit par un appel en console :
Vocabulaire :⚓︎
paramètre et argument
Lorsqu'on écrit double(nombre), nombre est appelé paramètre de la fonction double.
Lorsqu'on appelle la fonction double avec une valeur explicite pour nombre comme dans double(6), on dit que 6 est un argument de la fonction double.
Ainsi, si on appelle la fonction doubleavec l'argument 5, celle-ci renvoie 10 .
II. Portée des variables⚓︎
Découverte⚓︎
Exemple 1
⌛ Avant d'exécuter le programme ci-dessous, interrogez-vous sur la valeur de la variable i à l'issue de l’exécution, puis lancer le code et lisez l'explication.
🌵 Cliquez ici pour comprendre ...
Comme vous avez pu le constater, nous avons eu droit à une erreur : "NameError: name 'i' is not defined".
Pourquoi cette erreur, la variable i est bien définie dans la fonction fct() et la fonction fct() est bien exécutée, où est donc le problème ?
En fait, la variable i est une variable dite locale : elle a été définie dans une fonction et elle "restera" dans cette fonction.
Une fois que l'exécution de la fonction sera terminée, la variable i sera "détruite" (supprimée de la mémoire). Elle n'est donc pas accessible depuis "l'extérieur" de la fonction (ce qui explique le message d'erreur que nous obtenons).
Une variable définie dans une fonction est locale. Elle ne peut pas être utilisée en dehors de la fonction.
Exemple 2
⌛ Avant d'exécuter le programme ci-dessous, interrogez-vous sur ce qui va s'afficher, puis lancez le code et vérifiez.
# Tests (insensible à la casse)(Ctrl+I)
(Alt+: ; Ctrl pour inverser les colonnes)
(Esc)
🌵 Cliquez ici pour comprendre ...
Ici, pas de message d'erreur.
En fait, la variable i est ici une variable dite globale : elle a été définie à l'extérieur de le fonction.
La fonction peut y accéder.
Exemple 3
⌛ Avant d'exécuter le programme ci-dessous, interrogez-vous sur ce qui va s'afficher, puis lancez le code et vérifiez.
# Tests (insensible à la casse)(Ctrl+I)
(Alt+: ; Ctrl pour inverser les colonnes)
(Esc)
🌵 Cliquez ici pour comprendre ...
Cette fois pas d'erreur, mais à la fin de l'exécution de ce programme, la variable i référence la valeur 3.
En fait, dans cet exemple nous avons 2 variables i différentes : la variable i "globale" (celle qui a été définie en dehors de toute fonction) et la variable i "locale" (celle qui a été définie dans la fonction). Ces 2 variables portent le même nom (ce n'est pas une bonne idée), mais sont différentes.
👉 Une variable définie localement dans une fonction peut porter le même nom qu'une variable globale. Dans ce cas, ce sont deux variable distinctes mais de même nom (ce qui n'est pas une bonne pratique).
Exemple 4
⌛ Avant d'exécuter le programme ci-dessous, interrogez-vous sur ce qui va s'afficher, puis lancez le code et vérifiez.
Regardez de nouveau les exemples précédants. N'avons-nous pas déjà rencontré un exemple du même type ?
# Tests (insensible à la casse)(Ctrl+I)
(Alt+: ; Ctrl pour inverser les colonnes)
(Esc)
🌵 Cliquez ici pour comprendre ...
Nous avons juste rajouté la ligne global i dans la fonction.
Cela change tout car la variable i utilisée dans la fonction, est la variable globale i.
⚠️ Cette fonction va donc modifier une variable globale définie à l'extérieur de l fonction. C'est souvent très dangereux et déconseillé.
C'est parfois utile quand même. Pour pouvoir modifier une variable globale, il faut utiliser dans la fonction l'instruction global
🌵 En fait, l'utilisation de "global" est une (très) mauvaise pratique, car cette utilisation entraîne des "effets de bord".
👓 Observez ce qu'il se passe
Bilan sur la portée des variables⚓︎
À retenir
-
Une variable définie dans une fonction est locale.
Elle ne peut pas être utilisée en dehors de la fonction. -
Une variable définie à l'extérieur de la fonction est une variable globale.
La fonction peut y accéder. -
Il est possible qu'une variable locale et une variable globale portent le même nom. Ce n'est pas une bonne pratique. Ce sont deux variables différentes.
-
Une fonction peut modifier une variable globale
aen utilisantglobal a
D'autres tests⚓︎
Tester les variables locales et globales - 1
Exécuter le code ci-dessous, et comprendre le message d'erreur :
# Tests (insensible à la casse)(Ctrl+I)
(Alt+: ; Ctrl pour inverser les colonnes)
(Esc)
🌵 Cliquez ici pour comprendre ...
La ligne 5 fait une affectation score= donc score est une variable locale. Or score n'a pas été défini dans la fonction.
Le premier "hola" est affichée, mais une erreur est rencontrée à la fin du premier tour de boucle.
Tester les variables locales et globales - 2
Exécuter le code ci-dessous, et comprendre ce qui se passe :
# Tests (insensible à la casse)(Ctrl+I)
(Alt+: ; Ctrl pour inverser les colonnes)
(Esc)
🌵 Cliquez ici pour comprendre ...
score est une variable globale qui a été modifiée par la fonction.
La variable valeur est locale, mais ne sert à rien.
Questions
Portée des variables
-
Que va afficher le code suivant ?
- 'extérieur'
- Rien
- Une erreur
-
Que va afficher le code suivant ?
- 'intérieur' puis 'intérieur'
- 'intérieur' puis une erreur
- Une erreur puis une erreur
-
Que va afficher le code suivant ?
- 'local' puis 'global'
- 'global' puis 'local'
- 'local' puis 'local'
-
Que va afficher le code suivant ?
- 'temporaire'
- Rien
- Une erreur
-
Que va afficher le code suivant ?
- 'initial' puis 'modifié'
- 'modifié' puis 'initial'
- 'modifié' puis 'modifié'
III. Assertions⚓︎
Tester - 1
Exécuter le script ci-dessous :
# Tests (insensible à la casse)(Ctrl+I)
(Alt+: ; Ctrl pour inverser les colonnes)
(Esc)
Que s'est-il passé ?
Il ne se passe rien, le assert a bien été vérifié.
Tester - 2
Exécuter le script ci-dessous :
# Tests (insensible à la casse)(Ctrl+I)
(Alt+: ; Ctrl pour inverser les colonnes)
(Esc)
Que s'est-il passé ?
😢 On a une erreur : assertion erreur.
Le message de l'erreur est celui que nous avons indiqué sur la ligne assert
assert
👉assert est souvent utilisé pour signaler qu’il y a une erreur dans le code de la fonction.
👉 Lorsque l'on crée une fonction, on crée en même temps un "jeu de tests" que l'on vérifiera avec des assert
Tester - 3
Corrigeons notre fonction. Tester ci-dessous :
# Tests (insensible à la casse)(Ctrl+I)
(Alt+: ; Ctrl pour inverser les colonnes)
(Esc)
Que s'est-il passé ?
On constate que tous les tests se sont bien passés.
🐘 A retenir
A partie de maintenant, vous écrirez toujours les assert avant de réaliser le code de votre fonction.
😊 C'est ainsi que l'on doit mettre au point un programme
Remarque
🌵 Souvent, on n'écrit pas de message dans l'assertion.
Voir ci-dessous.
À vous de jouer
Compléter la fonction suivante qui calcule la somme \(1+2+...+n\)
Ajouter un jeu de tests avec des assert (Les messages ne sont pas obligatoires)
# Tests (insensible à la casse)(Ctrl+I)
(Alt+: ; Ctrl pour inverser les colonnes)
(Esc)
Testez vos fonctions
-
Choisir un cas ou vous pouvez, sans l'aide du code, déterminer ce que la fonction doit renvoyer.
-
Ajouter l'instruction assert
Exemple d'utilisation pour une fonction carre qui élève au carré:
Si le test est réussi, il ne se passera rien, sinon le code lève une exception AssertionError et affiche le message.
👉 Remarque : souvent nous n'écrirons pas de message explicatif. Nous nous contenterons par exemple de :
Dans ce cas-là, si le test est réussi, il ne se passera rien, sinon le code lève une exception AssertionError et n'affiche pas de message.
Créez votre fonction et des assertions
À vous de jouer 😊
# Tests (insensible à la casse)(Ctrl+I)
(Alt+: ; Ctrl pour inverser les colonnes)
(Esc)
IV. Exercices⚓︎
Exercice 1 : promotions
🎁 Dans une parfumerie, on propose deux promotions différentes pour l'achat de deux articles :
- Formule A : une réduction de 50% sur le prix du 2ème article (le moins cher)
- Formule B : une réduction de 20% sur le montant total à payer.
Muni d'un billet de 50€, Nicolas souhaite offrir deux parfums à sa mère .
1. Ecrire une fonction promo_A qui prend en paramètres prix1 et prix2 et qui renvoie le prix total à payer pour l’achat de deux parfums aux prix prix1 et prix2.
Par exemple :
promo_A(10, 20)doit renvoyer25, etpromo_A(20, 10)doit également renvoyer25.
Compléter ci-dessous. Il faut exécuter votre code, et ensuite obligatoirement le valider () pour voir la solution.
# Tests (insensible à la casse)(Ctrl+I)
(Alt+: ; Ctrl pour inverser les colonnes)
(Esc)
2. Ecrire de même, une fonction promo_B.
Par exemple :
promoB(10, 20)doit renvoyer 24promoB(20, 10)doit également renvoyer 24.
Compléter ci-dessous.
# Tests (insensible à la casse)(Ctrl+I)
(Alt+: ; Ctrl pour inverser les colonnes)
(Esc)
3. Ajouter le programme principal :
Il doit demander la saisie du prix des deux parfums, afficher le prix avec la formule A et la formule B, Afficher quelle est la formule la plus avantageuse, et si Nicolas pourra offrir les deux parfums à sa mère (il ne dispose que de 50 euros).
Vous testerez votre code pour :
- Un parfum à 10 € et un autre à 20 €
- Un parfum à 12 € et un autre à 45 €
- Un parfum à 35 € et un autre à 20 €
Les fonctions promo_A et promo_B sont dans du code caché. Il est inutile de les écrire.
# Tests (insensible à la casse)(Ctrl+I)
(Alt+: ; Ctrl pour inverser les colonnes)
(Esc)
Solution
prix_1 = float(input("prix_1 = "))
prix_2 = float(input("prix_2 = "))
prix_final_A = promo_A(prix_1, prix_2)
prix_final_B = promo_B(prix_1, prix_2)
print("le prix final a payer avec la promotion A est de : ", prix_final_A, "euros")
print("le prix final a payer avec la promotion B est de : ", prix_final_B, "euros")
if prix_final_A < prix_final_B:
print("la promotion A est plus avantageuse que que la promotion B")
prix_final = prix_final_A
elif prix_final_A == prix_final_B:
print("les deux promotions donnent des prix identiques")
prix_final = prix_final_A
else:
print("la promotion B est plus avantageuse que que la promotion A")
prix_final = prix_final_B
if prix_final > 50:
print("Nicolas ne peut pas acheter, il n a que 50 euros")
Utilisation de la tortue
# Tests (insensible à la casse)(Ctrl+I)
(Alt+: ; Ctrl pour inverser les colonnes)
(Esc)
Exercice 2 : Des triangles avec la tortue
1. Tester ci-dessous
# Tests (insensible à la casse)(Ctrl+I)
(Alt+: ; Ctrl pour inverser les colonnes)
(Esc)
2. Compléter ci-dessous pour qu'il s'affiche :

Contrainte
Il est interdit de modifier la fonction.
Il faudra l'appeler plusieurs fois.
# Tests (insensible à la casse)(Ctrl+I)
(Alt+: ; Ctrl pour inverser les colonnes)
(Esc)
Solution
3. Question facultative : Compléter ci-dessous pour qu'il s'affiche :

Contrainte
Il est interdit de modifier la fonction.
Il faudra l'appeler plusieurs fois.
# Tests (insensible à la casse)(Ctrl+I)
(Alt+: ; Ctrl pour inverser les colonnes)
(Esc)
Solution
- Si votre figure correspond à ce que vous avez demandé, c'est que c'est juste. 👍
- Sinon, réfléchissez encore ! 😅 Cette question est facultative ...
Exercice 3 : À vous d'écrire les fonctions
L’éxercice consiste à réécrire le programme suivant en le décomposant en fonctions (dont il faut choisir soigneusement le nom et les paramètres) tout en renommant les différentes variables, afin de le rendre plus clair.
Rappels sur la 
On rappelle ci-dessous les instructions utiles du module turtle.
| Appel | Rôle |
|---|---|
hideturtle() |
Cache la tortue. |
speed(n) |
Définit la vitesse de l'animation.n est un entier entre 1 (lent) et 10 (rapide).Si n est égal à 0 la figure s'affiche instantanément |
animation(s) |
Autorise ou non les animations.s est soit 'on' (avec animations, valeur par défaut)soit 'off' (sans animations). |
penup() ou up() |
Lève le crayon : les déplacements de la tortue ne sont plus dessinés. |
pendown() ou down() |
Baisse le crayon : les déplacements de la tortue sont dessinés. |
heading() |
Renvoie la direction vers laquelle pointe la tortue sous la forme d'une mesure d'angle en degrés. |
setheading(d) |
Définit la direction vers laquelle pointe la tortue.d est une mesure d'angle en degrés. |
position() |
Renvoie la position de la tortue sous la forme d'un couple de nombres (x, y). |
goto(x, y) |
La tortue se déplace à la position (x, y).x et y sont des nombres. |
left(a) |
La tortue tourne sur elle-même vers la gauche de a degrés.a est un nombre. |
right(a) |
La tortue tourne sur elle-même vers la droite de a degrés.a est un nombre. |
forward(p) |
La tortue avance de p pixels.p est un nombre. |
color("black") |
La couleur utilisée sera le noir |
begin_fill() |
Commence le remplissage avec une couleur |
end_fill() |
Termine le remplissage avec une couleur |
from turtle import *
hideturtle()
a = 50
speed(0)
for b in range(8):
for c in range(8):
if (b + c) % 2 == 0:
color("black")
else:
color("white")
up()
d = (b - 4) * a
goto(d, c * a - a * 4)
down()
begin_fill()
forward(a)
left(90)
forward(a)
left(90)
forward(a)
left(90)
forward(a)
left(90)
end_fill()
# Tests (insensible à la casse)(Ctrl+I)
(Alt+: ; Ctrl pour inverser les colonnes)
(Esc)
Votre figure
Solution possible
Voici une solution parmi d'autres possibles.
from turtle import *
def carre(a):
forward(a)
left(90)
def bouge(colonne, ligne, a):
up()
x = (colonne - 4) * a
y = ligne*a - a*4
goto(x, y)
down()
def damier(a):
speed(0)
hideturtle()
for colonne in range(8):
for ligne in range(8):
if (colonne + ligne) % 2 == 0:
color("black")
else:
color("white")
bouge(colonne, ligne, a)
begin_fill()
for i in range(4):
carre(a)
end_fill()
damier(50)
Crédit : d'après un exercice de J. Diraison
Exercice 4 : Des maximums
1. Ecrire une fonction maxi_2 qui prend en paramètre deux nombres entiers n1 et n2 et renvoie le plus grand des deux.
# Tests (insensible à la casse)(Ctrl+I)
(Alt+: ; Ctrl pour inverser les colonnes)
(Esc)
2. Ecrire une fonction maxi_3 qui prend en paramètre trois nombres entiers n1, n2 et n3 et renvoie le plus grand des trois.
Contrainte
Vous appelerez obligatoirement la fonction maxi_2
# Tests (insensible à la casse)(Ctrl+I)
(Alt+: ; Ctrl pour inverser les colonnes)
(Esc)
Exercice 5 : Des voyelles
1. Recopier, une à une les instructions ci-dessous dans la console, et observer le résultat
Tester ci-dessous :
# Tests (insensible à la casse)(Ctrl+I)
(Alt+: ; Ctrl pour inverser les colonnes)
(Esc)
2. Compléter la fonction suivante qui renvoie le nombre de voyelles dans mot.
Vous pourrez utiliser les syntaxes vues au 1.
# Tests (insensible à la casse)(Ctrl+I)
(Alt+: ; Ctrl pour inverser les colonnes)
(Esc)
Exercice 6 : La suite de Syracuse
La conjecture de Syracuse (ou de Collatz) postule ceci :
Prenons un nombre \(n\) :
- si \(n\) est pair, on le divise par 2
- sinon on le multiplie par 3 puis on ajoute 1.
On recommence cette opération tant que possible. Au bout d'un certain temps, on finira toujours par tomber sur le nombre 1.
1. Compléter la fonction suivant qui prend en paramètre un entier n et renvoie son successeur en respectant les règles énoncées ci-dessus.
# Tests (insensible à la casse)(Ctrl+I)
(Alt+: ; Ctrl pour inverser les colonnes)
(Esc)
2. Écrire une fonction syracuse qui prend en paramètre un entier n et qui affiche tous les termes de la suite de Syracuse jusqu'à 1 (on l'espère !).
Vous appelerez obligatoirement la fonction du 1.
# Tests (insensible à la casse)(Ctrl+I)
(Alt+: ; Ctrl pour inverser les colonnes)
(Esc)
3. Écrire une fonction temps_de_vol qui prend en paramètre un entier n et qui renvoie le nombre d'étapes pour arriver à 1, en partant de n.
Par exemple temps_de_vol(5) doit renvoyer 5.
# Tests (insensible à la casse)(Ctrl+I)
(Alt+: ; Ctrl pour inverser les colonnes)
(Esc)
4. Compléter la fonction suivante pour afficher le nombre de départ inférieur ou égal à n donnant le plus grand temps de vol, ainsi que le temps de vol correspondant . Vous pourrez appeler les fonctions écrites aux questions précédentes.
# Tests (insensible à la casse)(Ctrl+I)
(Alt+: ; Ctrl pour inverser les colonnes)
(Esc)
Exercice 7 : un peu de binaire
Cet exerccie est à réaliser après avoir étudié Le binaire
V. Bilan⚓︎
Exemple
Définition d'une fonction
La 1ère ligne de la fonction est la définition de la fonction :
Elle commence par le mot clef def, suivie du nom de la fonction, puis entre parenthèse, les paramètres de la fonction.Elle se termine par : qui indique qu'en dessous va se trouver un bloc d'instructions.
Paramètres d'une fonction
Dans def prix(nbre_adultes, nbre_enfants), on dit que nbre_adultes et nbre_enfants sont des paramètres de la fonction.
Ce sont des variables dont les valeurs seront déterminées lors de l'appel de la fonction.
def prix(nbre_adultes, nbre_enfants):
resultat = 37 * nbre_adultes + 28 * nbre_enfants # (1)
return resultat
- 👉 Remarque importante : Cette ligne utilise les variables
nbre_adultesetnbre_enfantsqui ne sont pas initialisée dans la fonction. C'est normal, comme nous l'avons dit juste au-dessus, ces variables seront initialisées lors de l'appel de la fonction.
Prenez le temps de lire les commentaires (cliquez sur le +)
Corps de la fonction
def prix(nbre_adultes, nbre_enfants):
resultat = 37 * nbre_adultes + 28 * nbre_enfants
return resultat # (1)
returnsignifie renvoyer, c'est cette ligne qui indique ce que va renvoyer la fonction. Ici elle renvoie resultat, donc elle renvoie la valeur de la variable resultat
Prenez le temps de lire les commentaires (cliquez sur le +)
Appel de la fonction
Cette ligne de code ne fait pas partie de la fonction (Elle n'est pas dans le bloc indenté). Les lignes de codes qui ne sont pas dans une fonction font partie de ce qu'on appelle le programme principal.
Une fois qu'une fonction est définie, il est possible de l'appeler (l'utiliser) dans le programme principal, mais aussi dans une autre fonction.
Utiliser le résultat renvoyé par une fonction
Toutefois, l'appel ci-dessus ne fait qu'appeler la fonction, qui renvoie le résultat. Ceci ne sera pas utile si nous ne conservons pas ce résultat (afin de pouvoir l'utiliser dans la suite du programme). Pour cela nous allons en général affecter ce résultat à une variable :
Si on veut seulement afficher le résultat, on peut directement afficher ainsi :
Arguments de la fonction
Quand on « appelle » prix(3, 2) :
• 3 est automatiquement affecté au 1er paramètre : la variable nbre_adultes
• 2 est automatiquement affecté au second paramètre : la variable nbre_enfants
3 et 2 sont les valeurs données en arguments.
Remarque 1 :⚓︎
Une fonction sans paramètres
Certaines fonctions n'ont aucun paramètre. Dans ce cas, on met des parenthèses vides aussi bien dans la définition que dans l'appel de la fonction :
Remarque 2 :⚓︎
Des fonctions qui ne renvoient rien
Certaines fonctions ne renvoient rien.
Exemple :
def ma_fonction(nom) :
print("Votre nom est :",nom)
return None # ou simplement return, ou pas de return du tout ...
ma_fonction()
De telles fonctions sont, dans certains langages, appelées des procédures. En python, on ne fait pas de différence. Une procédure fait quelques chose : ici par exemple, elle sert à afficher (dans la console) un message.
Notez que dans l'appel d'une procédure, on n'affecte pas le résultat à une variable. C'est logique car il n'y a pas de résultat, puisque la fonction ne renvoie rien.
Notion d'espace de noms⚓︎
Portée des variables
Une variable définie dans une fonction n'est connue qu'à l'"intérieur" de celle-ci.
Par exemple si on exécute ceci:
def prix(nbre_adultes, nbre_enfants):
resultat = 37 * nbre_adultes + 28 * nbre_enfants
return resultat
prix(resultat) # Cette ligne provoquera un message d'erreur !
On obtient le message :
En effet, la variable resultat n'est connue qu'à l'"intérieur" de la fonction
Définitions
- Les variables définies dans le corps d'une fonction sont appelées variables locales.
- Les variables définies dans le corps du programme (sous-entendu : pas à l'intérieur d'une fonction) sont appelées variables globales.
Règles d'accès aux variables locales et globales
- règle 1 : une variable locale (définie au cœur d'une fonction) est inaccessible hors de cette fonction.
- règle 2 : une variable globale (définie à l'extérieur d'une fonction) est accessible en lecture à l'intérieur d'une fonction.
- règle 3 : une variable globale (définie à l'extérieur d'une fonction) ne peut pas être modifiée à l'intérieur d'une fonction.

Source : Gilles Lassus
Une fonction peut appeler une autre fonction
Toutes nos fonctions (que nous écrivons ou que nous importons) sont définies avant toute exécution du programme. De sorte que, lorsque l'exécution du code commence, elles sont toutes reconnues et utilisables en tout point du code, y compris dans d'autres fonctions.
# Tests(insensible à la casse)(Ctrl+I)
(Alt+: ; Ctrl pour inverser les colonnes)
(Esc)