Notions de bases Python
Installing Python
Unix and Linux Installation
Here are the simple steps to install Python on Unix/Linux machine.
● Open a Web browser and go to [Link]
● Follow the link to download zipped source code available for Unix/Linux.
● Download and extract files.
● Editing the Modules/Setup file if you want to customize some options.
● run ./configure script
● make
● make install
This installs Python at standard location /usr/local/bin and its libraries at
/usr/local/lib/pythonXX where XX is the version of Python.
Windows Installation
Here are the steps to install Python on Windows machine.
● Open a Web browser and go to [Link]
● Follow the link for the Windows installer [Link] file where XYZ is the
version you need to install.
Setting path at Unix/Linux
To add the Python directory to the path for a particular session in Unix −
● In the csh shell − type setenv PATH "$PATH:/usr/local/bin/python" and press
Enter.
● In the bash shell (Linux) − type export PATH="$PATH:/usr/local/bin/python"
and press Enter.
● In the sh or ksh shell − type PATH="$PATH:/usr/local/bin/python" and press
Enter.
● Note − /usr/local/bin/python is the path of the Python directory
Setting path at Windows
Running Python
There are three different ways to start Python −
Interactive Interpreter
You can start Python from Unix, DOS, or any other system that provides you a
command-line interpreter or shell window.
Enter python the command line.
Start coding right away in the interactive interpreter.
$python # Unix/Linux C:> python # Windows/DOS
Here is the list of all the available command line options −
[Link] Option & Description
.
1 -d It provides debug output.
2 -O It generates optimized bytecode (resulting in .pyo files).
3 -S Do not run import site to look for Python paths on startup.
4 -v verbose output (detailed trace on import statements).
5 -X disable class-based built-in exceptions (just use strings); obsolete
starting with version 1.6.
6 -c cmd : run Python script sent in as cmd string
Le document fourni marque le début de la formation ("Notions de bases Python"). Il
traite principalement de l'installation du langage sous Unix/Linux et Windows, de la
configuration des variables d'environnement PATH, du lancement de l'interpréteur
interactif et de quelques options de ligne de commande (-d, -O, -S, -v, -X, -c).
Pour passer de cette introduction à un niveau d'Expert Python, voici le programme
complet structuré en 8 modules progressifs, intégrant l'existant et ajoutant
l'ensemble des notions avancées indispensables.
📌 Synthèse du Module Initial (Document fourni)
● Installation & Environnement :
○ Téléchargement du code source Unix/Linux sur [Link], édition
optionnelle de Modules/Setup, puis compilation via ./configure, make et
make install (emplacement par défaut /usr/local/bin).
○ Téléchargement de l'installateur Windows (.msi).
● Variables d'environnement PATH :
○ Configuration du PATH sous Unix selon le shell : export
PATH="$PATH:/usr/local/bin/python" (bash), setenv PATH
"$PATH:/usr/local/bin/python" (csh), ou
PATH="$PATH:/usr/local/bin/python" (sh/ksh).
○ Modification du PATH sous Windows via l'interface des variables
d'environnement système.
● Exécution de l'interpréteur :
○ Mode interactif en ligne de commande via $python sous Unix ou C:>
python sous Windows.
○ Utilisation des drapeaux système : -d (debug), -O (génération de
bytecode optimisé .pyo), -S (désactivation de l'import de site), -v
(mode verbeux pour les imports), -X (désactivation obsolète des
exceptions basées sur les classes) et -c cmd (exécution directe d'un script
transmis en chaîne).
🎓 Cursus Complet pour Devenir Expert Python
Module 1 : Gestion Moderne de l'Environnement & Interpréteur
1. Outillage moderne d'environnement :
○ Gestionnaires de versions (pyenv).
○ Isolation des dépendances (venv, poetry, uv, conda).
2. Fonctionnement interne de CPython :
○ Compilation du code source en bytecode (.pyc).
○ Structure de la mémoire, Global Interpreter Lock (GIL) et modèle
d'exécution.
○ Arbre syntaxique abstrait (module ast).
Module 2 : Fondamentaux Approfondis du Langage
1. Structures de données natives & complexité :
○ Listes, Tuples, Dictionnaires (table de hachage), Ensembles (set).
○ Compréhensions de listes, dictionnaires et ensembles.
2. Mémoire et Gestion des Références :
○ Compteur de références, Garbage Collector (module gc).
○ Objets mutables vs immutables, copie superficielle (copy) vs copie
profonde (deepcopy).
3. Fonctions avancées :
○ Portée des variables (règle LEGB : Local, Enclosing, Global, Built-in).
○ Closures et fonctions de premier ordre.
○ Arguments universels (*args, **kwargs) et arguments nommés
obligatoires.
Module 3 : Programmation Orientée Objet (POO) Avancée
1. Encapsulation et Propriétés :
○ Attributs privés, protégés et memento de nommage (Name Mangling).
○ Utilisation avancée du décorateur @property (getters, setters, deleters).
2. Héritage et Modèle Objet :
○ Héritage multiple, résolution de l'ordre des méthodes (MRO / Algorithme
C3 Linearization) et fonction super().
3. Méthodes Dunder (Magic Methods) :
○ Initialisation et représentation : __init__, __new__, __str__, __repr__.
○ Égalité et hachage : __eq__, __hash__.
○ Conteneurs personnalisés : __len__, __getitem__, __setitem__,
__iter__.
○ Gestionnaires de contexte : __enter__, __exit__.
4. Descripteurs :
○ Protocole des descripteurs (__get__, __set__, __delete__) pour la
validation automatique d'attributs.
Module 4 : Métaprogrammation & Motifs Avancés
1. Générateurs et Itertools :
○ Générateurs et expression yield, yield from.
○ Utilisation du module itertools (chain, cycle, groupby, combinations).
2. Décorateurs :
○ Décorateurs de fonctions, décorateurs acceptant des arguments (fabriques
de décorateurs).
○ Décorateurs de classes et conservation des métadonnées
([Link]).
3. Métaclasses & Introspection :
○ Fonctionnement de type comme métaclasse par défaut.
○ Création de métaclasses sur-mesure pour la modification dynamique des
classes lors de l'instanciation.
○ Inspection du code exécutable avec le module inspect.
Module 5 : Concurrence, Asynchronisme & Performance
1. Multi-threading vs Multi-processing :
○ Contournement du GIL pour les tâches orientées calcul (CPU-bound) via
multiprocessing.
○ Threading pour les tâches I/O-bound (threading, [Link]).
2. Programmation Asynchrone (asyncio) :
○ Boucle d'événements (Event Loop), fonctions coroutines (async / await).
○ Tâches, Futures, et gestion des exceptions asynchrones.
○ Clients et serveurs HTTP/WebSockets asynchrones (aiohttp, httpx).
Module 6 : Typage, Tests & Qualité de Code
1. Typage Statique Avançé :
○ Module typing (Union, Optional, Callable, Generics, Protocol,
TypeVar).
○ Vérification statique de type avec mypy.
○ Validation dynamique de données avec Pydantic.
2. Tests Unitaires et d'Intégration :
○ Framework pytest : Fixtures, Paramétrage, Mocks ([Link]),
Monkeypatching.
○ Couverture de code (pytest-cov).
3. Qualité et CI/CD :
○ Linter et formateurs : ruff, black, flake8.
○ Hooks pre-commit pour l'automatisation.
Module 7 : Architecture Logicielle, Design Patterns & Packaging
1. Design Patterns en Python :
○ Patterns Créationnels : Singleton, Factory, Builder.
○ Patterns Structurels : Decorator, Adapter, Proxy.
○ Patterns Comportementaux : Strategy, Observer, Command.
2. Architecture Propre :
○ Principes SOLID appliqués à Python.
○ Clean Architecture et Architecture Hexagonale / DDD (Domain-Driven
Design).
3. Packaging et Distribution :
○ Configuration de projet avec [Link].
○ Création et publication de packages sur PyPI via build et twine.
Module 8 : Profilage, Optimisation & Extensions C/Rust
1. Profilage de Code :
○ Profilage temporel (cProfile, line_profiler).
○ Profilage mémoire (memory_profiler).
2. Optimisation Mémoire & Vitesse :
○ Réduction de l'empreinte mémoire avec __slots__.
○ Compilateurs JIT (PyPy) et extensions C/Rust (Cython, PyO3).
💡 Projet Fil Rouge pour valider l'expertise
Pour mettre en pratique ces concepts, réalisez le projet suivant :
● Sujet : Développer un moteur de traitement de données asynchrone (ex: web
scraper / agrégateur de métriques en temps réel).
● Exigences :
1. Validation des données reçues via Pydantic et typage strict vérifié par
mypy.
2. Architecture en Clean Architecture avec gestionnaire de contexte et
métaclasses pour l'enregistrement automatique des plugins.
3. Traitement parallèle mixte (asyncio pour l'I/O et multiprocessing pour
les calculs de métriques).
4. Suite de tests complète avec pytest (fixtures + mocks) atteignant > 90%
de couverture.
5. Packaging standardisé avec [Link] et validation par hooks
pre-commit.