Structuration du code

Bloc et indentation

Les fonctions et les structures de contrôle introduisent l’idée de « bloc d’instructions ».

Elles prennent toutes la même forme:

MotClef ... :
    code
    code
    code

Le “:” est à chaque fois suivi d’une indentation.

C’est l’indentation qui signifie à l’interpréteur où commence et finit le bloc.

En Python, l’indentation est signifiante:

  • chaque ligne d’un bloc doit avoir la même indentation

  • on ne doit pas mélanger espaces et tabulations !

Saut de ligne

Une ligne correspond à une instruction. Il n’y a pas de symbole signifiant la fin d’une « ligne d’instruction ». (eg “;” en C)

Mais parfois une ligne est trop courte pour une instruction. La solution est alors d’utiliser “()”, “[]” ou “{}” sur plusieurs lignes.

[1]:
# une liste sur plusieurs lignes
l = [
    1,
    2,
    3,
    4,  # la dernière virgule est autorisée et ne change rien
]
l
[1]:
[1, 2, 3, 4]
[2]:
# un dictionnaire sur plusieurs lignes
d = {
    'un': 1,
    'deux': 2,
    'trois': 3,
    'quatre': 4
}
d
[2]:
{'un': 1, 'deux': 2, 'trois': 3, 'quatre': 4}
[3]:
# fermer une parenthèse de fonction sur une autre ligne
nom_de_fonction_vraiment_trop_long_pour_tout_ecrire_sur_une_ligne = max

result = nom_de_fonction_vraiment_trop_long_pour_tout_ecrire_sur_une_ligne(
    1, 2, 3, 4
)

result
[3]:
4
[4]:
# un calcul trop long
a = 1.
b = 2.
c = 3.
d = 4.

result = (a + (b ** 3) * 2) / (((c + d) * (a + b)) + ((a + b + c + d) * (a + b + c) * (a + b) * a))

result
[4]:
0.0845771144278607
[5]:
# c'est l'occasion de structurer un peu tout ça (si possible...)
a = 1.
b = 2.
c = 3.
d = 4.

result = (
    (a + (b ** 3) * 2)
    /
    (
        (c + d) * (a + b)
        +
        (a + b + c + d) * (a + b + c) * (a + b) * a
    )
)

result
[5]:
0.0845771144278607

PS : il existe un jeu de caractères pour indiquer la continuation de ligne, mais je n’en parlerai pas.

Exercices