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, parappendsuccessifs ;len, accès par indice positif valide ; concaténation+, extraction de tranche, copie (y compris son caractère superficiel) ;popen 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,returndans un corps de boucle. - Boucle
for(sans else) et itération surrange(a, b), une chaîne, un n-uplet, une liste, un dictionnaire au travers des méthodeskeysetitems. - Définition d’une fonction
def f (x1 , . . ., xn ),return. - Exceptions : lever une exception avec
raise, la rattraper avectry/except.
Programmation objet
- Classe, constructeur (
__init__avec un premier argumentself), 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
Nonecomme pointeur nul, comparaison avecis 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 moduleouimport module as aliasoufrom 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. Constructionwith. - Tirage pseudo-aléatoire avec la fonction
randintdu modulerandom.