IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)

Python, de zéro


précédentsommairesuivant

III. Caractéristiques du langage

III-1. la tabulation

La première caractéristique principale du langage est qu’il est structuré sur les tabulations (ou les espaces). Chaque groupe structurel (alternative, boucle…) doit regrouper les instructions appartenant au groupe dans un bloc tabulé (ou espacé) de façon croissante par rapport aux instructions n’y appartenant pas.

Ainsi, chaque niveau de tabulation correspond à un nouveau bloc, et toute ligne tabulée de façon égale sera alors considérée comme appartenant au même bloc.

Par exemple :

 
Sélectionnez
1.
2.
3.
4.
5.
6.
#!/usr/bin/env python
# coding: utf-8

if 5 == 5:
    print("5 = 5. Belle démonstration !!!")
    print("Toutefois, chose amusante, 4.99999 (à l’infini) vaut aussi 5…")

Ici, les deux instructions print placées à la même verticale ne seront exécutées qu’à la condition que le test soit vrai.

 
Sélectionnez
1.
2.
3.
4.
5.
6.
#!/usr/bin/env python
# coding: utf-8

if 5 == 5:
    print("5 = 5. Belle démonstration !!!")
print("Toutefois, chose amusante, 4.99999 (à l’infini) vaut aussi 5…")

Ici, seul le premier print appartient au bloc if et sera exécuté pour un test vrai ; tandis que le second print sera exécuté dans tous les cas.

Si un nouveau bloc (ex boucle) devait ensuite être intégré dans le bloc if, il serait alors nécessaire de le décaler lui aussi par rapport aux instructions propres au bloc if.

 
Sélectionnez
1.
2.
3.
4.
5.
6.
7.
8.
9.
#!/usr/bin/env python
# coding: utf-8

if 5 == 5:
    i=0
    while i < 5:
        print("5 = 5. Belle démonstration !!!")
        i+=1
print("Toutefois, chose amusante, 4.99999 (à l’infini) vaut aussi 5…")

Tandis que si ce nouveau bloc n’appartient pas au bloc if, alors il doit être écrit au même niveau.

 
Sélectionnez
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
#!/usr/bin/env python
# coding: utf-8

if 5 == 5:
    print("5 = 5. Belle démonstration !!!")

i=0
while i < 5:
    print("Toutefois, chose amusante, 4.99999 (à l’infini) vaut aussi 5…")
    i+=1

Le nombre de tabulations (ou d’espaces) pour un bloc est au choix du développeur. Il peut décider d’en mettre 1, 2, 3, 100, mais ensuite, il devra s’y conformer pour toutes les lignes du bloc. Deux blocs différents peuvent donc ne pas avoir le même nombre d’espaces ou tabulations (ce qui réduira alors bien évidemment la lisibilité du programme), mais toutes les lignes d’un même niveau le doivent.

L’utilisation d’espaces à la place de tabulations est possible, mais le mélange espaces+tabulations est interdit dans Python 3 (il était auparavant autorisé dans Python 2 selon la règle « une tabulation pour 8 espaces » ; ce qui pouvait poser des problèmes de maintenance et de lisibilité, car les développeurs ne sont pas tous obligés de définir la tabulation de leur éditeur sur 8 espaces).

Dans le cas particulier d’un bloc ne comportant qu’une seule instruction, il est possible d’écrire cette instruction directement sur la ligne définissant le bloc.

 
Sélectionnez
1.
2.
3.
4.
#!/usr/bin/env python
# coding: utf-8

if 5 == 5: print("5 = 5. Belle démonstration !!!")

Cette notion d’indentation forcée a été une préoccupation première de Guido van Rossum qui était excédé des langages dans lesquels cette syntaxe est permise et même recommandée pour la lisibilité (tel le C), mais que beaucoup de développeurs négligent.

Mais cette syntaxe, dans laquelle ces blocs sans caractère spécifique marquant leur début et leur fin, peut alors donner un effet inverse, surtout pour les blocs longs contenant des blocs imbriqués intermédiaires. Le bloc intermédiaire se termine et on ne sait plus où on en est !

C’est pourquoi les développeurs tentent parfois de trouver des astuces, souvent basées sur les commentaires, pour marquer la fin du bloc afin de mieux le faire ressortir.

 
Sélectionnez
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
#!/usr/bin/env python
# coding: utf-8

if 5 == 5:
    i=0
    while i < 5:
        print("5 = 5. Belle démonstration !!!")
        i+=1
    # while
# if
print("Toutefois, chose amusante, 4.99999 (à l’infini) vaut aussi 5…")

III-2. la ponctuation

Sa seconde caractéristique est que chaque début de bloc (conditions, boucles, fonctions, objets) se matérialise par un « deux-points » (:) terminant systématiquement l’instruction définissant le bloc.

 
Sélectionnez
1.
2.
3.
4.
5.
6.
#!/usr/bin/env python
# coding: utf-8

if 5 == 5:                    # Deux points terminent l’instruction !!!
    print("5 = 5. Belle démonstration !!!")
print("Toutefois 4.99999 (à l’infini) vaut aussi 5. Ne l’oubliez pas…")

Garder en permanence à l’esprit que ces deux caractéristiques sont primordiales dans l’écriture de programmes Python.


précédentsommairesuivant

Copyright © 2022 Svear (svear@free.fr) Permission est accordée de copier, distribuer ou modifier ce document selon les termes de la « Licence de Documentation Libre GNU » (GNU Free Documentation License), version 1.1 ou toute version ultérieure publiée par la Free Software Foundation.