Retour au cours

syntaxe de base : indentation, blocs, expressions et commentaires

dans cette leçon, vous posez les fondations : comment python structure le code, ce qu’est une expression, une instruction, et comment documenter proprement.

objectifs

  • comprendre l’indentation et les blocs
  • distinguer expression et instruction
  • utiliser les commentaires et docstrings
  • écrire des lignes claires et bien formées

l’essentiel en 30 secondes

  • python utilise l’indentation (espaces) pour délimiter les blocs
  • un bloc commence après : (if, for, while, def, class, try…)
  • une expression produit une valeur, une instruction fait une action
  • les commentaires commencent par #, les docstrings par """ ... """
  • préférez les parenthèses pour les lignes longues plutôt que \

indentation : la grammaire visuelle de python

  • utilisez 4 espaces par niveau (pas de tabulations)
  • tous les éléments d’un même bloc doivent être indentés au même niveau
  • mélange tabulations/espaces → erreur

exemples

# correct
if True:
    message = "ok"
    print(message)

# incorrect (indentation incohérente)
if True:
  print("deux espaces")
    print("quatre espaces")

blocs et deux-points

les blocs suivent une ligne qui se termine par :.

age = 20
if age >= 18:
    statut = "majeur"
else:
    statut = "mineur"

autres en-têtes qui ouvrent un bloc : for, while, def, class, try/except, with.

expression vs instruction

  • expression : a une valeur 2 + 3, "py" * 3, len([1,2]), x > 0
  • instruction : contrôle ou effet if, for, while, import, def, affectation =.

dans le repl, une expression affiche sa valeur :

>>> 1 + 2
3

noms et valeurs

  • identifiants valides : lettres, chiffres (pas en premier), _
  • style conseillé : snake_case pour variables et fonctions

littéraux usuels

n = 42          # int
x = 3.14        # float
s = "bonjour"   # str (ou 'bonjour')
v = True        # bool
z = None        # absence de valeur

opérateurs et précédence

arithmétique

a = 7 + 3 * 2     # 13
b = (7 + 3) * 2   # 20
c = 7 // 3        # division entière -> 2
d = 7 % 3         # modulo -> 1
e = 2 ** 3        # puissance -> 8

comparaisons et logique

x = 5
0 < x < 10        # chaînage -> True
(x > 2) and (x < 8)
not (x == 5)

appartenance et identité

"py" in "python"         # True
1 is 1                   # True (identité objets immuables simples)
[1,2] is [1,2]           # False (deux listes distinctes)

vérité et valeurs « falsy »

False, None, 0, 0.0, "", [], {}, set() sont considérés faux.

items = []
if not items:
    print("liste vide")

commentaires et docstrings

commentaires sur une ligne

# calcule la surface d'un rectangle
area = 3 * 4

docstrings (chaînes au début d’un module, d’une fonction ou d’une classe) :

def area(w: float, h: float) -> float:
    """calcule l'aire d'un rectangle en unités carrées."""
    return w * h

help(area) affiche cette docstring.

lignes longues et multi-lignes

préférez le regroupement par parenthèses

total = (
    1 + 2 + 3 +
    4 + 5
)

pour les structures littérales

nombres = [
    1, 2, 3,
    4, 5,
]

évitez \ sauf nécessité

# possible mais fragile :
result = 1 + 2 + \
         3 + 4

petites constructions utiles

instruction vide

if False:
    pass

suppression de nom

x = 10
del x

assignations composées

n = 1
n += 2   # n vaut 3

bonnes pratiques

  • un fichier = un objectif clair
  • noms explicites (count_users, pas cu)
  • pas de point-virgule pour enchaîner des instructions
  • une seule instruction par ligne

exercices

  1. indentation réécrivez ce code pour qu’il s’exécute sans erreur :

    n = 5
    if n % 2 == 0:
      print("pair")
        print("fin")
    else:
         print("impair")
  2. expressions vs instructions dans le repl, entrez trois expressions différentes puis trois instructions différentes. notez celles qui affichent une valeur sans print().

  3. précédence prédisez puis vérifiez les résultats :

    • 3 + 4 * 2
    • (3 + 4) * 2
    • 2 ** 3 ** 2
  4. docstring écrivez une fonction perimeter(w, h) avec une docstring. ouvrez le repl, importez-la et exécutez help(perimeter).

  5. lignes longues créez une liste de 12 prénoms sur plusieurs lignes avec des parenthèses ou crochets, puis affichez sa longueur.

dépannage

  • indentationerror remplacez les tabulations par des espaces, uniformisez à 4 espaces.
  • unexpected indent / unindent does not match any outer indentation level le niveau ne correspond pas au bloc parent. réalignez tout le bloc.
  • nameerror variable non définie au moment d’usage. vérifiez l’orthographe et l’ordre d’exécution.
  • syntaxerror cherchez le : manquant, une parenthèse oubliée, ou une ligne mal indentée.