Aller au contenu

Langage Python

Cette annexe liste limitativement les éléments du langage Python (version 3) dont la connaissance, est exigible des candidats à l’agrégation d’informatique. Elle contient en particulier le programme de l’Informatique Tronc Commun des CPGE scientifiques, mais ne s’y limite pas. Les éléments ci-dessous s’inscrivent dans la perspective de lire et d’écrire des programmes en Python ; aucun concept sous-jacent n’est exigible au titre de la présente annexe. Aucune connaissance sur un module particulier n’est exigible des candidats.

Traits et éléments techniques à connaître

Les éléments et notations suivants du langage Python doivent pouvoir être compris et utilisés par les candidats sans faire l’objet d’un rappel, y compris lorsqu’ils n’ont pas accès à un ordinateur.

Traits généraux

  • Typage dynamique : l’interprète détermine le type à la volée lors de l’exécution du code.
  • Principe d’indentation.
  • Portée lexicale : lorsqu’une expression fait référence à une variable à l’intérieur d’une fonction, Python cherche la valeur définie à l’intérieur de la fonction et à défaut la valeur dans l’espace global.
  • Appel de fonction par valeur : l’exécution de f (e) évalue d’abord l’expression e puis exécute f avec la valeur obtenue. Certaines valeurs sont des scalaires (booléens, entiers, etc.) d’autres des adresses (listes, objets, etc.).

Types de base

  • Opérations sur les entiers (int) : +, -, *, //, **, % avec des opérandes positifs.
  • Opérations sur les flottants (float) : +, -, *, /, **.
  • Opérations sur les booléens (bool) : not, or, and (et leur caractère paresseux).
  • Comparaisons ==, !=, <, >, <=, >=.

Types structurés

  • Structures indicées immuables (chaînes, n-uplets) : len, accès par indice positif valide, concaténation +, répétition *, extraction de tranche.
  • Listes : création par compréhension [e for x in s], par [e] * n, par append successifs ; len, accès par indice positif valide ; concaténation +, extraction de tranche, copie (y compris son caractère superficiel) ; pop en dernière position. Identification des tableaux et des listes.
  • Dictionnaires : création {c1 : v1 , . . ., cn : vn }, accès, insertion (d[k] = v), présence d’une clé (k in d), len, copy.

Structures de contrôle

  • Instruction d’affectation avec =. Dépaquetage de n-uplets.
  • Instruction conditionnelle : if, elif, else.
  • Boucle while (sans else). break, continue, return dans un corps de boucle.
  • Boucle for (sans else) et itération sur range(a, b), une chaîne, un n-uplet, une liste, un dictionnaire au travers des méthodes keys et items.
  • Définition d’une fonction def f (x1 , . . ., xn ), return.
  • Exceptions : lever une exception avec raise, la rattraper avec try/except.

Programmation objet

  • Classe, constructeur (__init__ avec un premier argument self), attributs.
  • Méthodes (avec un premier argument self).
  • Encapsulation de données dans un objet.
  • Application : construction de structures chaînées (cellules de listes) et arborescentes (nœuds d’arbres). Utilisation de None comme pointeur nul, comparaison avec is None. Encapsulation de la structure dans une autre classe.
  • Héritage. On se limite à de l’héritage simple.

Divers

  • Introduction d’un commentaire avec #.
  • Utilisation simple de print, sans paramètre facultatif.
  • Importation de modules avec import module ou import module as alias ou from module import f, g,...
  • Assertion : assert (sans message d’erreur).

Éléments techniques devant être reconnus et utilisables après rappel

Les éléments suivants du langage Python doivent pouvoir être utilisés par les candidats pour écrire des programmes dès lors qu’ils ont fait l’objet d’un rappel et que la documentation correspondante est fournie.

Types structurés

  • Ensembles : création set(), insertion (add), présence d’un élément (e in s), len.

Divers

  • Annotations de types. Vérification statique avec un outil tel que mypy.
  • Manipulation de fichiers texte (la documentation utile de ces fonctions doit être rappelée ; tout problème relatif aux encodages est éludé) : open, read, readline, readlines, split, write, close. Construction with.
  • Tirage pseudo-aléatoire avec la fonction randint du module random.