1NSI : Introduction à l'Univers Python⚓︎
Qu'est-ce que Python ?⚓︎
Python est un
Après installation, Python contient toujours, au minimum, la Bibliothèque/Librairie Standard de Python.
Qu'est-ce que la Bibliothèque/Librairie Standard Python ?⚓︎
La bibliothèque / librairie standard de Python est un très large réunion d'outils inclus automatiquement lors de l'installation de Python, qui contient deux grands types de fonctionnalités :
- des modules natifs (écrits en C) permettant de travailler en Python, notamment :
- de très nombreux modules supplémentaires (écrits en Python), permettant de travailler de manière standardisée avec des fonctionnalités thématiques supplémentaires, utiles pour le quotidien des développeurs.
Qu'est-ce qu'un Module Python ?
En Python, un
Extrait du Contenu de la Bibliothèque/Librairie Standard de Python⚓︎
Sont inclus dans la bibliothèque/librairie standard :
de très nombreuses fonctionnalités natives⚓︎
Qu'est-ce qu'une fonctionnalité native ?
Une fonctionnalité est dite
- Les types de données natifs (nombres entiers
int
, nombres flottantsfloat
, chaînes de caractèresstr
, listeslist
, tuplestuple
, dictionnairesdict
, données binairesbytes
etbytearray
, etc..), -
Les fonctions natives de Python (cf liste) (cf quelques exemples d'utilisations)
Fonctions Natives Python abs() delattr() hash() memoryview() set() all() dict() help() min() setattr() any() dir() hex() next() slice() ascii() divmod() id() object() sorted() bin() enumerate() input() oct() staticmethod() bool() eval() int() open() str() breakpoint() exec() isinstance() ord() sum() bytearray() filter() issubclass() pow() super() bytes() float() iter() print() tuple() callable() format() len() property() type() chr() frozenset() list() range() vars() classmethod() getattr() locals() repr() zip() compile() globals() map() reversed() __import__() complex() hasattr() max() round() -
les mots-clés natifs réservés du Langage Python (cf liste)
Mots-Clés Réservés de Python False await else import pass None break except in raise True class finally is return and continue for lambda try as def from nonlocal while assert del global not with async elif if or yield -
Les exceptions natives (gestion des erreurs),
- La gestion native de fichiers (ouverture, lecture, écriture, de fichiers)
- etc...
des modules supplémentaires⚓︎
Danger
Bien qu'appartenant à la bibliothèque/librairie standard de Python, ces modules supplémentaires NE sont PAS natifs : ils doivent donc être préalablement chargés en mémoire, grâce à une instruction, pour pouvoir disposer des fonctionnalités supplémentaires qu'ils contiennent. On parle d'
Voici un extrait des modules supplémentaires inclus dans la bibliothèque/librairie standard de Python (mais la liste ci-après est très loin d'être exhaustive) :
- Nombres et mathématiques :
- le module
math
(resp.cmath
) pour les calculs mathématiques avancés (resp. avec des nombres complexes), - le module
random
pour travailler avec l'aléatoire, - et d'autres modules :
numbers
,fractions
,decimal
,statistics
- le module
- Accès aux Fichiers et Dossiers :
- le module
os
pour les manipulations courantes de fichiers et dossiers
- le module
- Traitement et Persistance de Données :
- le module
csv
pour lire, sauvegarder et manipuler des fichiers au format csv, - le module
json
pour lire, sauvegarder et manipuler des fichiers au format csv, - les modules
html
etxml
pour lire, sauvegarder et manipuler des fichiers au format html et xml, - le module
sqlite3
pour travailler avec les bases de données SQLite, - le module
pickle
pour lire, manipuler et sauvegarder des types de données construits dans des fichiers binaires (spécifiques à Python), - le module
base64
pour encoder/décoder des données entre le binaire et base64, base16, base32 et base85, ASCII - etc..
- le module
- Graphiques :
- le module
turtle
pour dessiner avec une tortue, - le module
tkinter
pour créer des fenêtres graphiques,
- le module
- Compression et Archivage : les modules
zlib
,gzip
,bz2
,lzma
,zipfile
,tarfile
- Environnement d'Exécution et Outils de Développement Python :
- le module
sys
contrôle l'exécution d'un algorithme (pause, stop, etc..) - le module
time
permet la détermination des temps d'exécution d'un algorithme - les modules
cmd
etshlex
permettent l'exécution de commandes du Système d'Exploitation - le module
unittest
: un module de tests unitaires pour le débuggage des scripts/algorithmes Python - IDLE est un Environnement de Développement Intégré (IDE) par défaut
- etc..
- le module
- Exécution concourante/parallèle :
- le module
threading
gère le parallélisme basé sur les fils d'exécution (threads) - le module
subprocess
gestion des sous-processus
- le module
- Réseaux :
- le module
socket
: gestion réseau de bas niveau - le module
ssl
: utilisation de TLS/SSL pour la sécurité des communications
- le module
- Protocoles internet : de nombreux modules spécifiques, un pour chaque protocole internet (cgi, url, http, ftp, pop, imap, stmp, telnet, sockets, ip, etc...)
- services multimedia : par ex. module
audioloop
manipulation de données audio brutes, etc.. - internationalisation
- etc.. (de très nombreux autres...)
Vous trouverez un listing exhaustif de ces modules supplémentaires de la bibliothèque standard, sur cette page de la documentation officielle.
Qu'est-ce qu'un Module Python?⚓︎
(bis) Qu'est-ce qu'un Module Python ?
En Python, un
Un Module intéressant (mais pas trop simple pour les débutants)
Qu'est-ce qu'un Package Python?⚓︎
Qu'est-ce qu'un Package Python ?
- En Python, un
package est un ensemble de fichiers, usuellement structurés dans des dossiers, ajoutant des fonctionnalités supplémentaires au Langage de programmation Python. Ils se concentrent souvent sur un thème précis assez spécialisé. - Dans les autres langages de programmation, on parle plutôt de
bibliothèque (logicielle), ou delibrairie , oulibrary .
Intuitivement et plus simplement, un package ou une bibliothèque/librairie est un ensemble de fonctionnalités supplémentaires, souvent sous forme de fonctions (au sens informatique du terme), ayant souvent une thématique particulière.
Quelques bibliothèques/librairies/packages Python intéressantes
Pillow : Pillow est une bibliothèque pour la manipulation d'images en Python. Cette bibliothèque fait partie de la distribution Anaconda.NumPy : pour les calculs mathématiques avec des tableaux multidimensionnels de nombres et les matrices (2D). Utile pour les calculs scientifiques fondamentaux et l' Apprentissage Automatique / le Machine Learning (ML) . Cette bibliothèque fait partie de la distribution Anaconda.SciPy : basée sur NumPy, SciPy contient différents modules pour le calcul scientifique : modules d'interpolation et d'optimisation, d’algèbre linéaire, d’intégration et de statistiques, de traitement du signal, et de traitement de données financières. Cette bibliothèque fait partie de la distribution Anaconda.Pandas : basée sur SciPy et NumPy, Pandas est très utile pour la manipulation et l'analyse de données. Pandas est idéal pour manipuler les données de séries chronologiques, par exemple pour analyser dans le temps les mouvements des prix sur les marchés financiers. Cette bibliothèque fait partie de la distribution Anaconda.Matplotlib : compatible avec NumPy et SciPy, Matplotlib est une bibliothèque pour la visualisation (graphique) des données. Cette bibliothèque fait partie de la distribution Anaconda.Plotly : compatible avec NumPy et SciPy, Plotly est une bibliothèque pour la visualisation (graphique) dynamique des données. Cette bibliothèque fait partie de la distribution Anaconda.scikit-learn : basé sur NumPy et SciPy, scikit-learn est une bibliothèque pour l' Apprentissage Automatique / le Machine Learning (ML) . Cette bibliothèque fait partie de la distribution Anaconda.PyTorch : basé sur NumPy et SciPy, PyTorch est une bibliothèque pour l' Apprentissage Automatique / le Machine Learning (ML) . Cette bibliothèque fait partie de la distribution Anaconda.TensorFlow : TensorFlow est une bibliothèque pour l' Apprentissage Automatique / le Machine Learning (ML) , les Réseaux de Neurones / Neural Networks , et l' Apprentissage Profond / le Deep Learning . Cette bibliothèque fait partie de la distribution Anaconda.Keras : Basé sur Tensorflow, Keras est une bibliothèque pour les Réseaux de Neurones / les Neural Networks , et l' Apprentissage Profond / le Deep Learning . Cette bibliothèque fait partie de la distribution Anaconda.
Qu'est-ce qu'un Framework / Cadriciel?⚓︎
Qu'est-ce qu'un Framework / Cadriciel? (inspiré de Wikipedia)
Un
Un framework se distingue d'une simple bibliothèque logicielle principalement par :
- son caractère générique, faiblement spécialisé, contrairement à certaines bibliothèques.
Un framework peut à ce titre être constitué de plusieurs bibliothèques, chacune spécialisée dans un domaine. Un framework peut néanmoins être spécialisé, sur un langage particulier, une plateforme spécifique, un domaine particulier : communication de données, data mapping, etc. - son architecture logicielle (comment structurer le logiciel) : cela peut aller jusqu'à devoir respecter certains
patrons de conception oudesign pattern , càd une manière caractéristique d'organiser des modules, reconnu comme bonne pratique en réponse à un problème de conception d'un logiciel. Les bibliothèques constituant le framework sont alors organisées selon le même paradigme/modèle.
- des contraintes physiques (structuration en dossiers et sous-dossiers spécifiques) et
- des contraintes logicielles (composants logiciels élémentaires souvent imposés, mais communiquant nativement entre eux),
Un framework utilise souvent des notions avancées de programmation :
- des paradigmes de programmation avancée (par ex. Programmation Orientée Objet - OOP, au programme de TNSI)
- des architectures logicielles avancées (par ex. MVC=Modèle Vue Controlleur= une manière de penser les responsabilités des composants logiciels, etc..)
C'est pourquoi, un framework est peu accessible aux débutants, et son apprentissage requiert un certain temps et aussi de surmonter des difficultés techniques et d'abstraction (on parle de learning curve ). Par contre, il peut être très utile à des développeurs plus expérimentés pour ne pas avoir à réinventer la roue, car il dispose souvent de composants logiciels classiques usuels et prêts à l'emploi, par exemple :
- un composant pour gérer l'authentification
- un composant pour le routage d'URLs
- un composant pour des modèles (de pages, etc..)
- un composant pour gérer la communication avec les bases de données
- etc..
Quelques frameworks Python
Les frameworks suivants, basés sur le Langage Python (et HTML, etc..), servent à créer des applications/sites web
Django (gros framework)Flask (micro framework)TurboGears (gros framework)CherryPy (micro framework)Pyramid , etc..
Qu'est-ce que le dépôt PyPI ?⚓︎
Au delà de la bibliothèque standard, il existe une collection grandissante de plusieurs centaines de milliers de composants (des programmes, des modules, des packages, des frameworks, etc..), disponibles dans le dépôt de logiciels appelé Python Package Index - PyPI : https://pypi.org/
On peut installer les logiciels de ce dépôt sur votre machine grâce au gestionnaire de paquets Python nommé pip