La plupart des langages de programmation contiennent ce qu'on appelle des blocs d'instructions. Ces blocs regroupent une ou plusieurs lignes de code qui sont exécutées dans un contexte particulier. Ces blocs d'instructions apportent une notion d'appartenance d'une ou plusieurs lignes de code à d'autres lignes de code.
ifage>=18:print("Vous êtes majeur !")
Dans l'exemple ci-dessus, avec les structures conditionnelles, le bloc d'instructions composé de la fonction print appartient à la structure conditionnelle de la ligne au-dessus.
Avec Python, contrairement à presque tous les autres langages de programmation, les blocs d'instructions sont définis par la mise en page.
Exemple avec JavaScript
Par exemple, avec JavaScript, la syntaxe est tout de suite un peu plus lourde.
if(age>=18){console.log("Vous êtes majeur !");}
On a quand même des retours à la ligne et des indentations, mais c'est vraiment uniquement pour que le code reste facilement lisible. Dans la pratique, on pourrait tout condenser en une ligne et ça fonctionnerait aussi.
if(age>=18){console.log("Vous êtes majeur !");}
C'est à la fois un avantage et un inconvénient, parce que la syntaxe est plus lourde avec des parenthèses, des accolades, des points-virgules, mais elle permet aussi d'avoir un code qui est un peu plus permissif.
Mise en page Python
Avec Python, c'est la mise en page de notre code qui va indiquer ces blocs d'instructions.
ifage>=18:print("Vous êtes majeur !")
C'est l'indentation qui va indiquer qu'une ligne de code est dépendante d'une autre. Là aussi, cela comporte des avantages et des inconvénients, mais l'avantage principal, c'est que la syntaxe est grandement allégée.
L'autre élément qui indique le début d'un bloc d'instructions, ce sont les deux points : que l'on met à la fin d'une ligne. Quand vous voyez ces deux points, vous pouvez être assuré que les lignes qui suivent vont être indentées.
Les blocs d'instructions peuvent également s'imbriquer les uns à l'intérieur des autres. Les lignes de code au même niveau d’indentation appartiennent donc au même bloc d'instructions.
ifage>=18:print("Vous êtes majeur !")iflangage=="Python":print("Vous pouvez rentrer")print("Le script est terminé")
La ligne avec la fonction print et la ligne avec la structure conditionnelle if langage == "Python": ne seront exécutées que si la variable age est plus grande ou égale à 18. De même, le dernier print qui indique "vous pouvez rentrer", ne s'exécutera que si la variable age est plus grande ou égale à 18, et que la variable langage est égale à "Python".
À l’inverse, la dernière ligne s'exécutera peu importe la valeur de la variable age et de la variable langage. Vu qu'elle est au premier niveau d’indentation, elle ne dépend d'aucune ligne de code.
!!!warning
Une tabulation doit être justifiée.
!!!
Comme on l'a vu après une structure conditionnelle, on met une indentation pour indiquer que les lignes de code ne seront exécutées que si la condition est vraie.
Dans les prochaines parties, on verra d'autres cas de figure dans lesquels les indentations sont nécessaires au bon fonctionnement du code. Il faut donc bien faire attention aux endroits où l'on met des indentations.
Par exemple, le code suivant n'est pas valide.
print("Bonjour")print("Comment ça va ?")
Ici, aucune raison de rajouter une indentation pour le deuxième print, il n'est rattaché à aucune structure conditionnelle ou autre structure qui puisse indiquer une appartenance.
Si vous essayez d'exécuter ce code dans un interpréteur Python, vous aurez une erreur qui porte bien son nom et qui indique que votre code comporte une indentation inattendue (IndentationError: unexpected indent).