Adloun

Bases de Python, variables et types

Cours · Python (école d'ingénieur), chapitre 1 · école d'ingénieur, informatique · le début du chapitre, la suite sur Adloun

1.1 Introduction et Motivation

Python est un langage de programmation moderne, interprété et multi-paradigmes. Sa syntaxe claire, épurée et proche du langage naturel en fait le choix privilégié pour l'enseignement de l'informatique, le calcul scientifique, l'intelligence artificielle et l'analyse de données. L'objectif de ce premier chapitre est de poser les bases de l'écosystème Python, de distinguer le mode interactif du mode script, et de comprendre précisément comment Python gère les variables en mémoire. Nous aborderons également les types primitifs de base et le découpage de séquences (slicing) à travers des exemples théoriques et des exercices d'application corrigés.

1.2 Écosystème et Environnement de Travail

Python est un langage interprété. Contrairement aux langages compilés (comme le C ou le C++), où le code source est traduit en code machine avant l'exécution, Python utilise un programme appelé interpréteur qui traduit et exécute les instructions ligne par ligne.

1.2.1 Mode Interactif vs Mode Script

On distingue deux manières principales d'interagir avec l'interpréteur :

1.2.2 Retour de Valeur vs Effet de Bord

Un point d'achoppement classique pour les débutants est la distinction fondamentale entre le retour de valeur d'une fonction et son effet sur l'environnement (effet de bord).

Définition 1.1Retour vs Effet de bord
  • Le retour de valeur est le résultat mathématique ou logique produit par l'évaluation d'une expression ou d'une fonction. Ce résultat est transmis au programme appelant et peut être stocké dans une variable.
  • L'effet de bord (ou effet sur l'environnement) est toute modification de l'état du système extérieur à la fonction, comme l'affichage de texte sur la console (stdout), l'écriture dans un fichier ou la modification d'un périphérique.
Exemple 1.2Analyse de print

La fonction print() affiche la représentation textuelle de ses arguments à l'écran (effet sur l'environnement). Cependant, elle ne renvoie rien d'utile au programme : son retour de valeur est l'objet spécial None.


>>> res = print("Bonjour")
Bonjour
>>> print(res)
None

1.2.3 Personnalisation de l'Affichage

La fonction intégrée print accepte plusieurs arguments nommés facultatifs permettant de contrôler finement son comportement :

Exemple 1.3Redirection de print

Le code suivant n'affiche rien à l'écran, mais crée un fichier essai.txt contenant la chaîne Hello world ! :


print('Hello world !', file=open('essai.txt', 'w'))

1.3 Variables et Référencement en Mémoire

Contrairement à des langages comme le C où une variable correspond à une boîte mémoire de taille fixe stockant directement une valeur, Python utilise un système de références d'objets (ou liaison de noms).

1.3.1 Mécanisme de Liaison (Binding)

En Python, tout est objet. Une affectation comme largeur = 12.45 réalise les étapes suivantes :

Le schéma suivant illustre la structure mémoire après l'exécution du script d'affectation :


largeur = 12.45
longueur = 42.18
aire = longueur * largeur
iRemarqueGarbage Collector

Lorsqu'un objet en mémoire n'est plus référencé par aucune variable (par exemple si largeur est réaffectée à une autre valeur), son compteur de références tombe à zéro. Le garbage collector (ramasse-miettes) de Python libère alors automatiquement cet espace mémoire.

1.3.2 Égalité de Valeur vs Égalité Physique

La distinction entre les variables comme références d'objets mène à deux notions d'égalité :

Exemple 1.4Comparaison de variables

Soit le script suivant :


a = 257
b = 257
c = a

Ici, a == b vaut True (mêmes valeurs), mais a is b vaut False (deux objets distincts créés en mémoire). En revanche, a is c renvoie True car c a été liée directement à la même adresse que a.

1.4 Types Primitifs et Représentation

En Python, les types sont dynamiquement associés aux objets, et non aux noms de variables. On utilise la fonction type() pour inspecter le type d'un objet.

1.4.1 Représentation Numérique

Python possède trois types numériques fondamentaux :

1.4.2 Opérateurs Mathématiques

Les opérateurs de calcul de base sont présentés dans le tableau ci-dessous :

OpérateurOpérationExemple
x + ySomme5 + 3.0 8.0
x - yDifférence10 - 2 8
x yProduit4 5 20
x / yQuotient de la division réelle23 / 3 7.666...
x // yQuotient de la division euclidienne23 // 3 7
x % yReste de la division euclidienne (modulo)23 % 3 2
x yPuissance ()2 3 8
abs(x)Valeur absolue / Module d'un complexeabs(-5) 5
Figure : Principales opérations arithmétiques.
iRemarqueType du résultat

L'utilisation de la division réelle / produit toujours un type float, même si le résultat est entier (ex. 4 / 2 renvoie 2.0). Lors d'opérations mixtes entre int et float, la conversion en float est automatique.

1.4.3 Booléens et Logique

Le type booléen (bool) ne contient que deux valeurs : True (vrai) et False (faux). Les opérateurs logiques sont les mots-clés not, and et or. Les opérateurs de comparaison comparant les valeurs numériques sont <, >, <=, >=, == et !=.

1.5 Chaînes de Caractères et Slicing

Le type str représente des séquences immuables de caractères Unicode.

1.5.1 Définition et Opérations

Les chaînes de caractères peuvent être délimitées par des apostrophes simples ' ou des guillemets doubles ".

1.5.2 Indexation

On accède à un caractère individuel par son index entre crochets. Python utilise un adressage à base 0. Il est également possible d'utiliser des index négatifs pour compter à partir de la fin du conteneur (l'index -1 désignant le dernier caractère).

CaractèreLouis-Le-Grand
Index positif012345678910111213
Index négatif-14-13-12-11-10-9-8-7-6-5-4-3-2-1

1.5.3 Slicing (Découpage en Tranches)

Le slicing permet d'extraire une sous-séquence d'une chaîne (ou de n'importe quelle liste). La syntaxe générale est :

où debut est inclus, et fin est exclu.

Exemple 1.5Exemples de slicing

Soit ch = "Louis-Le-Grand" :

  • ch[3:8] renvoie "is-Le" (indices 3 à 7 inclus).
  • ch[6:] renvoie "Le-Grand".
  • ch[::-1] renvoie "dnarG-eL-siuoL" (inversion complète de la chaîne).

1.6 Exercices résolus

Exercice 1 : Analyse de l'interpréteur (Retour vs Effet)

Déterminer l'affichage produit sur la console par l'exécution successive des instructions suivantes sous IPython :


In [1]: 1 + 2
In [2]: print(1 + 2)
In [3]: print(print(1 + 2))
In [4]: print(1) + 2

La suite du cours est sur Adloun

Le chapitre en entier, formules et figures comprises, avec le tuteur, les fiches, les QCM et les exercices.

Lire la suite du cours

En accès libre, sans inscription.

Exercices corrigés de ce chapitre

Lire la suite du cours →